rsync
canvas
CanvasRenderingContext2D
- ctx.clearRect();
- ctx.fillRect();
- ctx.strokeRect();
Property
Text Property
ctx.font
@default: “10px sans-serif”;
ctx.textAlign
@enum : start, end, left, right, center;
@default : start;ctx.textBaseline
@enum: top, hanging, middle, alphabetic, ideographic, bottom
@default: alphabeticctx.direction
@enum: ltr, rtl, inherit
@default: inheritShadow Property
ctx.shadowBlur
@default: 0
ctx.shadowColor
@default: ‘rgba(0,0,0,0)’
ctx.shadowOffsetX
@default: 0
ctx.shadowOffsetY
@default: 0
Graphics Property
ctx.fillStyle
@default: #000
ctx.strokeStyle
default: #000
Line Property
ctx.lineWidth
@defalt: 1.0
ctx.lingCap
@default: butt
@enum: butt, round, squarectx.lineJoin
@default: miter
@enum: miter, round, blevelctx.miterLimit
@description:
@default: 10ctx.lineDashOffset
@default: 0.0
ctx.fillText(text, x, y, maxWidth);
- ctx.strokeText(x, y);
- ctx.measureText();
Webpack 插件
什么是 Webpack 插件
插件是对 javascript 代码进行逻辑处理的模块。
Config 配置型插件
123456 new webpack.NormalModuleReplacementPlugin(resourceRegExp,newResource// 如果是相对路径,则是相对于被替换模块的位置;// 也可以是一个函数。)
关于 context,详见文档
123456 new webpack.ContextReplacementPlugin(resourceRegExp,[newContentResource],[newContentRecursive],[newContentRegExp])
1234 new webpack.IgnorePlugin(requestRegExp,[contextRegExp])
预加载模块以提升性能。
123456 new webpack.PrefetchPlugin([context],// 预加载的绝对路径request// 引入模块的字符串)
12345 new webpack.ResolverPlugin([plugins],[types]// 可选值:normal, context, loader)
123 new webpack.ResolverPlugin.FileAppendPlugin([plugins])
|
|
设置可以通过 process.env 获取的环境变量。
12345 new webpack.EnvironmentPlugin(["NODE_ENV"])// e.g:var env = process.env.NODE_ENV;
Output 输出型插件
在打包后的块文件顶部添加额外内容。
1234567 new webpack.BannerPlugin(banner,// 写在注释里面的字符串。options// options.raw:设置为 true 时,则不会写在评论里。// options.entryOnly:是否只添加到入口文件。)
Optimize 优化型插件
将文件去重以减小打包文件。去重后的模块只存在一个实例。
123 new webpack.optimize.DedupePlugin([files])
不建议在开发模式中运用。
设置生成的块文件的最大数目。超过的文件会合并起来。
123456 new webpack.optimize.LimitChunkCountPlugin(options// options.maxChunks// options.chunkOverhead// options.entryChunkMultiplicator)
将阈值以下的块文件合并。
1234 new webpack.optimize.MinChunkSizePlugin(options// options.minChunkSize)
1234 new webpack.optimize.OccurrenceOrderPlugin(preferEntry//)
Webpack
Configuration
context
entry 的基本目录。默认是process.cwd()
entry
解析的入口文件。
|
|
output
打包后的文件名。
可替代变量名:[hash]这次打包的哈希值,[name],[chunkhash]文件哈希值
。
打包文件放置的绝对路径。
可替代变量名:[hash]
。
输出的文件在浏览器中的公共路径URL。
比如加载器loader解析后的内联标签<script>,<link>
,文件中的src,url()
等,当静态文件部署在cdn中的时候,这个参数非常有用。可替代变量名:[hash]
。
非入口文件相对于output.path的路径。
可替代变量名:[id],[name],[hash],[chunkhash]
。
代码映射文件的文件名。
可替代变量名:[id],[name],[hash]
。Default: "[file].map"
。
是否开启模块的注释。
Default: false
。
库文件的导出(export)变量名。
如果设置了该参数,则会把输出当做一个库文件(library)。
对于公共文件(如react)打包成库文件是一个比较好的选择。
库文件的导出(export)格式。
Default: "var"
。
type | value | resulting import code |
---|---|---|
var | ‘abc’ | module.exports = abc; |
var | ‘abc.def’ | module.exports = abc.def; |
this | ‘abc’ | (function() { module.exports = this[‘abc’]; }()); |
this | [‘abc’, ‘def’] | (function() { module.exports = this[‘abc’][‘def’]; }()); |
commonjs | ‘abc’ | module.exports = require(‘abc’); |
commonjs2 | [‘abc’, ‘def’] | module.exports = require(‘abc’).def; |
amd | ‘abc’ | define([‘abc’], function(X) { module.exports = xxx; }) |
umd | ‘abc’ | everything above |
跨域加载文件参数。false (default) | anonymous | use-credentials
|
|
module
定义对模块处理的工具和逻辑。
自动加载的转换非 javascript 文件的模块,如 css-loader, jsx-loader 等。
webpack 只能解析 javascript 语法,所以要通过 loader 转换成 javascript 可解析的内容。
参数 | 解释 |
---|---|
test | 匹配文件名,String|RegExp|Mixed with ‘and’ |
exclude | 排除目录 |
include | 包含目录 |
loader | loader 列表字符串,通过 ! 连接,加载顺序从右至左 |
loaders | loader 列表数组 |
module.loaders 加载之前加载的 loaders。
匹配不进行 loader 解析的文件。RegExp|[RegExp]
|
|
resolve
定义模块别名字典(替代名)。
当以 $ 结尾时,只有完全匹配才会被替代。
alias | require(‘xyz’) | require(‘xyz/file.js’) |
---|---|---|
{ xyz: “modu” } | node_modules/modu/index.js | node_modules/modu/file.js |
{ xyz$: “modu” } | node_modules/modu/index.js | node_modules/xyz/file.js |
{ xyz: “modu/dir” } | node_modules/modu/dir/index.js | node_modules/dir/file.js |
{ xyz$: “modu/dir” } | node_modules/modu/dir/index.js | node_modules/modu/file.js |
模块搜索的 绝对路径(数组)。
辨析:当需要层级搜索的时候,用 resolve.modulesDirectories
模块搜索的 文件夹(数组)。
搜索的方式与 nodejs 一样:’./node_modules’, ‘../node_modules’ … 。
Default: [“web_modules”, “node_modules”]
也是搜索模块的绝对路径(数组)。
当 resolve.root 和 resolve.modulesDirectories 均没有找到的时候在该目录搜索。
搜索模块时匹配的后缀名(数组)。
Default: [‘’, ‘.webpack.js’, ‘.web.js’, ‘.js’]。
设置该参数的时候将会覆盖默认参数,并且要使require('./index.js')
可以被正确引入,则必须加入空字符串 ‘’。
|
|
resolveLoader
loaders 名的匹配模板(数组)。
Default: [‘*-webpack-loader’, ‘*-web-loader’, ‘*-loader’, ‘*‘]
externals
指定不需要被 webpack 打包的依赖。
依赖的类型由 output.libraryTarget 决定。
|
|
target
定义打包后的代码运行的环境。默认为 浏览器或类浏览器 环境。
类型 | 解释 |
---|---|
‘web’ | Compile for usage in a browser-like environment (default) |
‘webworker’ | Compile as WebWorker |
‘node’ | Compile for usage in a node.js-like environment (use require to load chunks) |
‘async-node’ | Compile for usage in a node.js-like environment (use fs and vm to load chunks async) |
‘node-webkit’ | Compile for usage in webkit, uses jsonp chunk loading but also supports builtin node.js modules plus require(“nw.gui”) (experimental) |
‘electron’ | Compile for usage in Electron – supports require-ing Electron-specific modules. |
bail
Report the first error as a hard error instead of tolerating it.
profile
捕获模块时间信息。
cache
缓存模块以提高性能,在 dev 模式下默认打开。
watch
进入监视模式。
watchOptions
设置打包延时时间(ms)。
Default: 300
>
debug
将 loader 切换到 debug 模式。
devtool
设置 debug 工具。
devtool | build speed | rebuild speed | production supported | quality |
---|---|---|---|---|
eval | +++ | +++ | no | generated code |
cheap-eval-source-map | + | ++ | no | transformed code (lines only) |
cheap-source-map | + | o | yes | transformed code (lines only) |
cheap-module-eval-source-map | o | ++ | no | original source (lines only) |
cheap-module-source-map | o | - | yes | original source (lines only) |
eval-source-map | - | + | no | original source |
source-map | - | - | yes | original source |
loader
提供给 加载器 上下文的自定义值。
plugins
给整个编译提供的插件模块。
注意:加载器 和 插件 的不同。前者只是将非 javascript 资源转换成 javascript 内容;后者则是对 javascript 代码的逻辑处理。
商君书-农战
凡人主之所以劝民者,官爵也;国之所以兴者,农战也。今民求官爵,皆不以农战,而以巧言虚道,此谓劳民。劳民者,其国必无力;无力者,其国必削。
善为国者,其教民也,皆作壹而得官爵,是故不官无爵。国去言,则民朴;民朴,则不淫。民见上利之从壹空出也,则作壹;作壹,则民不偷营;民不偷营,则多力;多力,则国强。今境内之民皆曰:“农战可避,而官爵可得也。”是故豪杰皆可变业,务学《诗》、《书》,随从外权,上可以得显,下可以求官爵;要靡事商贾,为技艺,皆以避农战。具备,国之危也。
民以此为教者,其国必削。
善为国者,仓廪虽满,不偷于农;国大,民众,不淫于言。则民朴壹。
民朴壹,则官爵不可巧而取也。不可巧取,则奸不生。奸不生,则主不惑。
今境内之民及处官爵者,见朝廷之可以巧言辩说取官爵也,故官爵不可得而长也。是故进则曲主,退则虑私,所以实其私,然则下卖权矣。夫曲主虑私,非国利也,而为之者,以其爵禄也;下卖权,非忠臣也,而为之者,以末货也。然则下官之冀迁者皆曰:“多货,则上官可得而欲也。”曰:“我不以货事上而求迁者,则如以狸饵鼠尔,必不冀矣;若以情事上而求迁者,则如引诸绝绳而求乘枉木也,愈不冀矣。二者不可以得迁,则我焉得无下动众取货以事上而以求迁乎?”百姓曰:“我疾农,先实公仓,收余以食亲;为上忘生而战,以尊主安国也。仓虚,主卑,家贫。然则不如索官。”亲戚交游合,则更虑矣。豪杰务学《诗》、《书》,随从外权;要靡事商贾,为技艺,皆以避农战。民以此为教,则粟焉得无少,而兵焉得无弱也?
商君书-垦令
无宿治,则邪官不及为私利于民。而百官之情不相稽,则农有余曰;邪官不及为私利于民,则农不败。农不败而有余日,则草必垦矣。
訾粟而税,则上壹而民平。上壹,则信;信,则臣不敢为邪。民平,则慎;慎,则难变。上信而官不敢为邪,民慎而难变,则下不非上,中不苦官。
下不非上,中不苦官,则壮民疾农不变。壮民疾农不变,则少民学之不休。
少民学之不休,则草必垦矣。
无以外权爵任与官,则民不贵学问,又不贱农。民不贵学,则愚;愚,则无外交;无外交别则国安不殆。民不贱农,则勉农而不偷,则草必垦矣。
禄厚而税多,食口众者,败农者也。则以其食口之数贱而重使之,则辟淫游惰之民无所于食。民无所于食,则必农;农,则草必垦矣。
使商无得籴(dí,买进粮食,与“粜”相对),农无得粜(tiào),则窳(yù,恶劣)惰之农勉疾。商不得籴,则多岁不加乐。多岁不加乐,则饥岁无裕利。无裕利,则商怯;商怯,则欲农。
窳惰之农勉疾,商欲农,则草必垦矣。
声服无通于百县,则民行作不顾,休居不听。休居不听,则气不淫。行作不顾,则意必壹。意壹而气不淫,则草必垦矣。
无得取庸,则大夫家长不建缮,爱子不惰食,惰民不窳,而庸民无所于食,是必农。大夫家长不建缮,则农事不伤。爱子、惰民不窳,则故田不荒。
农事不伤,农民益农,则草必垦矣。
废逆旅,则奸伪、躁心、私交、疑农之民不行,逆旅之民无所于食,则必农。农,则草必垦矣。
贵酒肉之价,重其租,令十倍其朴,然则商贾少,农不能喜酣奭,大臣不为荒饱。商贾少,则上不费粟。民不能喜酣奭,则农不慢。大臣不荒,则国事不稽,主无过举。上不费粟。民不慢农,则草必垦矣。
重刑而连其罪,则褊急之民不斗,很刚之民不讼,怠惰之民不游,费资之民不作,巧谀、恶心之民无变也。五民者不生于境内,则草必垦矣。
使民无得擅徙,则诛愚。乱农农民无所于食而必农。愚心、躁欲之民壹意,则农民必静。农静、诛愚,则草必垦矣。
均出余子之使令,以世使之,又高其解舍,令有甬官食,概。不可以辟役,而大官未可必得也,则余子不游事人,则必农。农,则草必垦矣。
国之大臣诸大夫,博闻、辩慧、游居之事,皆无得为,无得居游于百县,则农民无所闻变见方。农民无所闻变见方,则知农无从离其故事,而愚农不知,不好学问。愚农不知,不好学问,则务疾农。知农不离其故事,则草必垦矣。
令军市无有女子。而命其商,令人自给甲兵,使视军兴;又使军市无得私输粮者。则奸谋无所于伏,盗输粮者不私稽,轻游之民不游军市,则农民不淫,国粟不老家劳,则草必垦矣。
百县之治一形,则从迂者不敢更其制,过而废者不敢匿举。过举不匿,则官无邪人。迂者不饰,代者不更,则官属少而民不劳。官无邪,则民不敖;民不敖,则业不败。官属少,征不烦。民不劳,则农多日,农多日,征不烦,业不败,则草必垦矣。
重关市之赋,则农恶商,商有疑惰之心。农恶商,商疑惰,则草必垦矣。
以商之口数使商,令之厮、舆、徒、重者必当名,则农逸而商劳。农逸,则良田不荒;商劳,则去来赍(jī,怀抱着)送之礼无通于百县。则农民不饥,行不饰。农民不饥、行不饰,则公作必疾,而私作不晃,则农事必胜。农事必胜,则草必垦矣。
令送粮无取僦(jiǜ,租赁),无得反庸,车牛舆重必当名。然则往速来疾,则业不败农,业不败农,则草必垦矣。
无得为罪人请于吏而饷食之,则奸民无主。奸民无主,则为奸不勉。为奸不勉,则奸民无朴。奸民无朴则农民不败。农民不败,则草必垦矣。
商君书-更法
孝公平画,公孙鞅、甘龙、杜挚三大夫御于君。虑世事之变,讨正法之本,求使民之道。
君曰:“代立不忘社稷,君之道也;错法务明主长,臣之行也。今吾欲变法以治,更礼以教百姓,恐天下之议我也。”
公孙鞅曰:“臣闻之:‘疑行无成,疑事无功。’君亟定变法之虑,殆无顾天下之议也。且夫有高人之行者;有独知之虑者,必见骜于民。语曰:愚者暗于成事,智者见于未萌。民不可与虑始,而可与乐成。郭偃之法曰:‘论至德者不和于俗,成大功者不谋于众。’法者所以爱民也,礼者所以便事也。是以圣人苟可以强国,不法其故;苟可以利民,不循其礼。”
孝公曰:“善!”
甘龙曰:“不然,臣闻之:‘圣人不易民而教,知者不变法而治。’因民而教者,不劳而功成;据法而治者,吏习而民安。今若变法,不循秦国之故,更礼以教民,臣恐天下之议君,愿熟察之。”
公孙鞅曰:“子之所言,世俗之言也。夫常人安于故习,学者溺于所闻。此两者,所以居官而守法,非所与论于法之外者也。三代不同礼而王,五代不同法而霸。故知者作法,而愚者制焉;贤者更礼,而不肖者拘焉。拘礼之人不足与言事,制法之人不足与论变。君无疑矣。”
杜挚曰:“臣闻之:‘利不百,不变法;功不十,不易器’。臣闻:‘法古不过,循礼无邪。君其图之!’”;
公孙鞅曰:“前世不同教,何古之法?帝王不相复,何礼之循?伏羲、神农,教而不诛;黄帝、尧、舜,诛而不怒;及至文、武,各当时而立法,因事而制礼。礼、法以时而定;制、令顺其宜;兵甲器备,各便其用。臣故曰:治世不一道,便国不必法古。汤、武之王也,不脩古而兴;殷、夏之灭也,不易礼而亡。然则反古者未必可非,循礼者未足多是也。君无疑矣。”
孝公曰:“善!吾闻穷巷多怪,曲学多辨。愚者之笑,智者哀焉;狂夫之乐,贤者丧焉。拘世以议,寡人不之疑矣。”
于是遂出垦草令。