好好学习,天天向上!本博文章多来源于网络,如有侵权,请留言(q2585+46962)告知,博主将及时处理!
Pages: 1/292 First page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Next page Final page [ View by Articles | List ]
Mar 17
当你遇到一个人
也许,你知道他
也许,你不知道他
在某年夏天傍晚的烧烤摊旁
在堵车一旁的车上
在某个风雨飘摇的夜里
20某某年 或更远的199几年
记不清了

放下或拾取
岁月如梭,
人的脚步走走停停
留下些许记忆的琐碎事情,难以忘怀

冬的清冷,冬去春来
笑颜依稀
Feb 13

 在 Typescript 2.0 中使用 @type 类型定义

基于 Typescript 开发的时候,很麻烦的一个问题就是类型定义。导致在编译的时候,经常会看到一连串的找不到类型的提示。解决的方式经过了许多的变化,从 DefinitelyTyped 到 typings。最后是 @types。在 Typescript 2.0 之后,推荐使用 @types 方式。

DefinitelyTyped

这个工具已经不被推荐,仅作介绍。

多数来自 javascript 的库是没有 TypeScript 类型定义的。为了解决这个问题,DefinitelyTyped 被创建出来,它提供了多数流行的脚本库的 TypeScript 定义,你可以使用名为 tsd 的一个工具来管理它。

首先,你需要安装这个工具。

npm install tsd -g

然后,可以使用这个工具来安装你需要的定义库。比如 jquery 的定义库。

tsd install jquery --save

 

如果提供了 --save 参数,它会创建一个名为 tsd.json 的配置文件来保存所管理的类型定义包。看起来如下所示。

复制代码
{     "version": "v4",     "repo": "DefinitelyTyped/DefinitelyTyped",     "ref": "master",     "path": "typings",     "bundle": "typings/tsd.d.ts",     "installed": {         "node/node.d.ts": {             "commit": "6834f97fb33561a3ad40695084da2b660efaee29"         }     } }
复制代码

 

以后,直接使用

tsd install

 

就可以安装定义在配置文件中的所有的包了。

Typings

这个也不推荐了。

后来,我们有了 Typings, 这是也是一个用来管理 Typescript 定义的库,你需要安装这个应用。

# Install Typings CLI utility. npm install typings --global

 如果需要一个库的定义文件,比如 react

typings install react --save

 安装之后,在你的项目文件夹中会自动创建一个名为 typings 的文件夹来专门保存类型定义的库。

如果这个定义来自 DefinitelyTyped, 则现有加上一个参数 --ambient

typings install jquery --ambient  --save

它自己需要一个配置文件 typings.json,可以用它来管理项目使用到的类型定义,这样,类似于 NPM,我们可以使用 install 命令来自动安装需要的类型定义。

typings install

这个 typings.json 文件的内容示例如下。

复制代码
{   "ambientDependencies": {     "jquery": "registry:dt/jquery#1.10.0+20161119044246"   },   "dependencies": {     "react": "registry:npm/react#15.0.1+20160601175240"   } }
复制代码

还是需要专门的工具来管理类型系统。我们可以让这个问题更加简单一点。

@Types

使用另外一套系统来管理类型定义显然不太方便。

在 Typescript 2.0 之后,TypeScript 将会默认的查看 ./node_modules/@types 文件夹,自动从这里来获取模块的类型定义,当然了,你需要独立安装这个类型定义。

比如,你希望 core.js 的类型定义,那么,你需要安装这个库的定义库。

npm install --save @types/core-js

与我们安装一个普通的库没有区别。当然了,常用的 jquery 也有。Microsoft 在 The Future of Declaration Files 介绍了 TypeScript 的这个新特性。

默认情况下,所有的 @types 包都会在编译时应用,任意层的 node_modules/@types 都会被使用,进一步说,在 ./node_modules/@types/,../node_modules/@types/../../node_modules/@types/ 都被应用。

如果你的类型定义不在这个文件夹中,可以使用 typesRoot 来配置,只有在 typeRoots 中的包才会被包含,例如:

{    "compilerOptions": {        "typeRoots" : ["./typings"]    } }

现在,只有在 ./typings 中的才会应用,而 ./node_modules/@types 中的则不会。

如果配置了 types,则只有列出的包才会包含。

{    "compilerOptions": {        "types" : ["node", "lodash", "express"]    } }

这样将只会包含 ./node_modules/@types/node, ./node_modules/@types/lodash 和 ./node_modules/@types/express ,其它的则不会被包含进来。

如果配置为

"types": []

则不会包含任何包。

Reference

tsconfig.json

Feb 13
遇到的问题以及解决方法
问题一
ts 无法识别$ref

解决方法
① 直接在 this.$refs.xxx 后面申明类型如:

② 在export default class xxx extends Vue里面声明全部的$ref 的类型


问题二
ts 无法识别 require

解决方法

安装声明文件



问题三
运行npm run build 出现


解决方法

也就是说升级你的uglifyjs-webpack-plugin版本:



问题四
vue-property-decorator 装饰器写法不对。当时我是要把 mixins,注入到组件里,我就这样写:

ts提示找不到 mixin。我就很纳闷为什么找不到名字,由于官网vue-property-decorator例子太少,只好一步一步摸索?

解决方法

把mixins写在@Component里面…,像这样:

注意点
如果你引用第三方无类型声明的库,那就需要自己编写x.d.ts文件
如果引用 ui 组件的时候,如果控制台出现Property '$xxx' does not exist on type 'App'的话,那么可以在vue-shim.d.ts增加
Jan 25

Tags:
Jan 24
vue-tools vue程序员必备,实时查看组件data数据和vuex数据等
Download ( 2706 downloads)


juejing 掘金谷歌插件,实时显示热门技术
Download ( 2577 downloads)


草料,显示当前页面为二维码
Download ( 2564 downloads)

Jan 24

Highslide JS
直接在浏览器中打开接口,会以JSON格式显示
Dec 16
  CommonJS, AMD, CMD都是JS模块化的规范。

  CommonJS是服务器端js模块化的规范,NodeJS是这种规范的实现。

  AMD(异步模块定义)和CMD(通用模块定义)都是浏览器端js模块化的规范。RequireJS 遵循的是 AMD,SeaJS 遵循的是 CMD。



一、CommonJS

  根据CommonJS规范,一个单独的文件就是一个模块。加载模块使用require方法,该方法读取一个文件并执行,最后返回文件内部的exports对象。所以,定义一个模块就是写一个新的js文件,但是最后要将文件的内容exports出来。接下来我们看一下如何定义模块和加载模块。



//接下来我们去执行这个文件,前提是你本地要安装node.js,不多说了,自己百度安装。
//首先打开cmd, cd到这两个文件所在的目录下,执行: node test.js
node test.js
//输出结果:我是定义的模块
复制代码
  当我们执行 node test.js 的时候,根据 var module = require("./module"); 会加载同一目录下的module.js文件,并将这个文件的exports对象返回,赋值给module,所以我们调用 module.test(); 就相当于执行了module.js文件。

  以上就是CommonJS规范下的模块定义与加载的形式。

  CommonJS 加载模块是同步的,所以只有加载完成才能执行后面的操作。像Node.js主要用于服务器的编程,加载的模块文件一般都已经存在本地硬盘,所以加载起来比较快,不用考虑异步加载的方式,所以CommonJS规范比较适用。但如果是浏览器环境,要从服务器加载模块,这是就必须采用异步模式。所以就有了 AMD  CMD 解决方案。



二、AMD(异步模块定义)

  AMD规范通过define方法去定义模块,通过require方法去加载模块。RequireJS实现了这种规范。

  AMD只有一个接口:define(id?,dependencies?,factory); 它要在声明模块的时候制定所有的依赖(dep),并且还要当做形参传到factory中。要是没什么依赖,就定义简单的模块(或者叫独立的模块),下面我们看代码实现:


  3. AMD 的 API 默认是一个当多个用,CMD 的 API 严格区分,推崇职责单一。比如 AMD 里,require 分全局 require 和局部 require,都叫 require。CMD 里,没有全局 require,而是根据模块系统的完备性,提供 seajs.use 来实现模块系统的加载启动。CMD 里,每个 API 都简单纯粹。
Pages: 1/292 First page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Next page Final page [ View by Articles | List ]