全局安装 gulp:
1
$ npm install --global gulp
作为项目的开发依赖(devDependencies)安装:
1
$ npm install --save-dev gulp
在项目根目录下创建一个名为 gulpfile.js 的文件:
1 | var gulp = require('gulp'); |
- 运行 gulp:
1 | $ gulp |
默认的名为 default 的任务(task)将会被运行,在这里,这个任务并未做任何事情。
全局安装 gulp:
1 | $ npm install --global gulp |
作为项目的开发依赖(devDependencies)安装:
1 | $ npm install --save-dev gulp |
在项目根目录下创建一个名为 gulpfile.js 的文件:
1 | var gulp = require('gulp'); |
1 | $ gulp |
默认的名为 default 的任务(task)将会被运行,在这里,这个任务并未做任何事情。
想要使用…map啥啥啥的话,你需要transform-object-rest-spread。
npm装一个babel-plugin-transform-object-rest-spread
,之后在package.json或其他调用babel的地方加上transform-object-rest-spread,类似这样:
"babel": {
"presets": ["es2015"],
"plugins": [ "transform-object-rest-spread"]
}
Sass 和 SCSS 其实是同一种东西,我们平时都称之为 Sass,两者之间不同之处有以下两点:
Sass 和 CSS 写法的确存在一定的差异,由于 Sass 是基于 Ruby 写出来,所以其延续了 Ruby 的书写规范。在书写 Sass 时不带有大括号和分号,其主要是依靠严格的缩进方式来控制的
SCSS 和 CSS 写法无差别,这也是 Sass 后来越来越受大众喜欢原因之一。==简单点说,把你现有的“.css”文件直接修改成“.scss”即可使用。==
组件对应 wxss 文件的样式,只对组件wxml内的节点生效。编写组件样式时,需要注意以下几点:
1 | #a { } /* 在组件中不能使用 */ |
除此以外,组件可以指定它所在节点的默认样式,使用 :host 选择器(需要包含基础库 1.7.2 或更高版本的开发者工具支持)。
1 | /* 组件 custom-component.wxss */ |
1 | <!-- 页面的 WXML --> |
SASS在Windows操作系统内依赖于Ruby环境,因此在安装SASS之前:
1、需要先安装Ruby。Ruby现阶段的安装与一般应用程序安装没有太大区别,环境变量等由安装程序自行设置。
2、Ruby环境内有个包管理器——GEM,它类似于Nodejs下的NPM,它随着Ruby一起被安装,因此不需要额外安装。
请尽可能用比较新的 RubyGems 版本,建议 2.6.x 以上。1
2
3$ gem update --system # 这里请翻墙一下
$ gem -v
2.6.3
1 | $ gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/ |
如果遇到 SSL 证书问题,你又无法解决,请直接用 http://gems.ruby-china.org 避免 SSL 的问题。
4、请注意,务必先安装SASS,再安装Compass,并且后者对前者版本存在依赖,如果你安装的SASS不是Compass要求的版本,会导致Compass安装不成功。
5、scss更新
1 | gem update sass |
6、scss卸载1
gem uninstall sass
参考:
wepy.confing.js 取消注释1
2
3sass: {
outputStyle: 'compressed'
},
安装 compilers
1 | cnpm install node-sass -D |
创建并新建分支1
2$ git checkout -b dev
Switched to a new branch 'dev'
用git branch命令查看当前分支:
1 | $ git branch |
切换回master分支:
1 | $ git checkout master |
把dev分支的工作成果合并到master分支上:
1 | $ git merge dev |
删除dev分支
1 | $ git branch -d dev |
小结
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
最后记得推送
描述:
上下文,函数以及参数动态绑定,返回值为绑定之后的函数. 其中args是可选的动态参数,self在fn中使用this调用。
使用方法:
1 | angular.bind(self,fn,args ); |
描述:
此方法用于手动加载angularjs模板
(官方翻译:注意基于端到端的测试不能使用此功能来引导手动加载,他们必须使用ngapp。 angularjs会检测这个模板是否被浏览器加载或者加载多次并且在控制台给出警告在加载其他模块的时候,这防止了奇怪的结果,在实际应用中,angularjs在尝试其它的多个实例来研究DOM)。
使用方法:
1 | angular.bootstrap(element, [modules], [config]); |
描述:
复制一个对象或者一个数组(好吧,万物皆对象,数组也是一个对象)。
如果省略了destination,一个新的对象或数组将会被创建出来;
如果提供了destination,则source对象中的所有元素和属性都会被复制到destination中;
如果source不是对象或数组(例如是null或undefined), 则返回source;
如果source和destination类型不一致,则会抛出异常。
注意:这个是单纯复制覆盖,不是类似继承
使用方法:
1 | angular.copy(source, [destination]); |
返回值:
返回复制或更新后的对象
描述:
包裹着一部分DOM element或者是HTML字符串,把它作为一个jQuery元素来处理。(类似于jQuery的选择器啦) 如果jQuery被引入了,则angular.element就可以看作是jQuery选择器,选择的对象可以使用jQuery的函数;如果jQuery不可用,angular.element只能接受HTML字符串或者DOM元素为参数,选择的元素只可以调用Angular中嵌入的精简版的jQuery library(名为: “jQuery lite” or “jqLite”).
注意: 所有被Angular引用的元素都是jQuery或者jqLite对象,不是原始的DOM元素了。
返回值:
jQuery对象或者jqLite对象
补充:
angular还提供了一下额外的方法和事情(有无jQuery都适用)
事件:
$destroy: 当jqLite/jQuery DOM对象被销毁是促发。
方法:
描述:
比较两个值或者两个对象是不是相等。还支持值的类型,正则表达式和数组的比较。两个值或对象被认为是相等的前提条件是以下的情况至少能满足一项:
使用方法:
1 | angular.equals(o1, o2) |
返回值:
boolean(如果相等返回True)
描述:
循环对obj对象的每个元素调用iterator, obj对象可以是一个Object或一个Array. Iterator函数调用方法: iterator(value, key, obj), 其中obj是被迭代对象,key是obj的property key或者是数组的index,value就是相应的值啦.
使用方法:
1 | angular.forEach(obj, iterator, [context]) |
描述:
把Json字符串转为对象
使用方法:
1 | angular.fromJson(json); |
描述:
把对象转为Json字符串
使用方法:
1 | angular.toJson(obj, pretty); |
描述:
返回它第一参数的函数. 此函数多用于函数是编程.
使用方法:
1 | angular.identity(value); |
返回值:
1 | value |
描述:
复制src对象中的属性去dst对象中. 支持多个src对象. 如果你不想改变一个对象,你可以把dst设为空对象{}: var object = angular.extend({}, object1, object2). 注意: angular.extend不支持递归复制.
使用方法:
1 | angular.extend(dst, src); |
返回值:
对dst的引用
描述:
创建一个injector对象, 调用injector对象的方法可以获得angular的service, 或者用来做依赖注入.
使用方法:
1 | angular.injector(modules, [strictDi]) |
返回值:
Injector对象
描述:
将指定的字符串转换为小写。
使用方法:
1 | angular.lowercase(string); |
描述:
将指定的字符串转换为大写。
使用方法:
1 | angular.uppercase(string); |
输出(Emits)符合所提供的匹配模式(glob)或者匹配模式的数组(array of globs)的文件。 将返回一个 Vinyl files 的 stream 它可以被 piped 到别的插件中。
1 | gulp.src('client/templates/*.jade') |
类型: String 默认值: 将会加在 glob 之前 (请看 glob2base)
如, 请想像一下在一个路径为 client/js/somedir 的目录中,有一个文件叫 somefile.js :
1 | gulp.src('client/js/**/*.js') // 匹配 'client/js/somedir/somefile.js' 并且将 `base` 解析为 `client/js/` |
能被 pipe 进来,并且将会写文件。并且重新输出(emits)所有数据,因此你可以将它 pipe 到多个文件夹。++如果某文件夹不存在,将会自动创建它++。
1 | gulp.src('./client/templates/*.jade') |
类型: String or Function
文件将被写入的路径(输出目录)。也可以传入一个函数,在函数中返回相应路径,这个函数也可以由 vinyl 文件实例 来提供。
定义一个使用 Orchestrator 实现的任务(task)。
1 | gulp.task('somename', function() { |
任务的名字,如果你需要在命令行中运行你的某些任务,那么,==请不要在名字中使用空格==。
注意: 你的任务是否在这些前置依赖的任务完成之前运行了?请一定要确保你所依赖的任务列表中的任务都使用了正确的异步执行方式:使用一个 callback,或者返回一个 promise 或 stream。
该函数定义任务所要执行的一些操作。通常来说,它会是这种形式:gulp.src().pipe(someplugin())。
异步任务支持
任务可以异步执行,如果 fn 能做到以下其中一点:
1 | // 在 shell 中执行一个命令 |
1 | gulp.task('somename', function() { |
1 | var Q = require('q'); |
注意: 默认的,task 将以最大的并发数执行,也就是说,gulp 会一次性运行所有的 task 并且不做任何等待。如果你想要创建一个序列化的 task 队列,并以特定的顺序执行,你需要做两件事:
我们先假定你有两个 task,”one” 和 “two”,并且你希望它们按照这个顺序执行:
在 “one” 中,你加入一个提示,来告知什么时候它会完成:可以再完成时候返回一个 callback,或者返回一个 promise 或 stream,这样系统会去等待它完成。
在 “two” 中,你需要添加一个提示来告诉系统它需要依赖第一个 task 完成。
因此,这个例子的实际代码将会是这样:
1 | var gulp = require('gulp'); |
监视文件,并且可以在文件发生改动时候做一些事情。它总会返回一个 EventEmitter 来发射(emit) change 事件。
gulp.watch(glob[, opts], tasks)