Update README.md
已被拆分成多个插件,放一起容易带来麻烦,请迁移对应的插件中。
Common Js
AMD
CMD
fis3 已经默认不自带模块化开发支持,需要此插件来完成模块化开发的支持。
isMod
true
require('./xxx')
require('./xxx.js')
mode
'amd'
全局安装或者本地安装都可以。
npm install fis3-hook-module
在 fis-conf.js 中加入以下代码。
fis.hook('module');
此插件已经集成对模块化资源进行 amd 包裹,无需 jswrapper
通过配置标记哪些 js isMod 为 true 即可.
// 标记 /libs 当前目录下面的 js 文件为模块化 js. fis.match('/libs/*.js', { isMod: true });
fis.hook('module', { // 可以通过设置此值来给 js 文件进行包裹。 // // 可选值: // - `amd` 即 amd 包裹 // - `closure` 即闭包包裹。 // - 留空时不进行处理,isMod 为 true 的文件除外。isMod 为 true 的文件,会进行 amd 方式包裹。 wrap: '', // 分为两种: // // `commonJs` 选用此方案,性能最好,规则更简单 // `amd` 需要词法分析,时间略长。 // 当设置为 auto 的时候,程序自动判断。 mode: 'auto', // 配置 baseUrl, 配置,页面中的 require 路径都是基于此路径查找的。 // https://github.com/amdjs/amdjs-api/blob/master/CommonConfig.md#baseurl- // baseUrl: '.', // 可以给项目中的路径或者文件建立别名。 // // { // libs: '/static/libs', // jquery: '/static/libs/jquery' // } // // 那么: // // require('libs/alert'); 就等价于 require('/static/libs/alert'); // requrire('jquery'); 等价于: require('/static/libs/jquery'); // 更多信息请参考。https://github.com/amdjs/amdjs-api/blob/master/CommonConfig.md#paths- // paths: {}, // 后续补充 // 届时,请参考。https://github.com/amdjs/amdjs-api/blob/master/CommonConfig.md#packages- // packages: [], // 是否依赖前置 // 即 是否将 factory 中的 require 对象,前置放在 define 的第二个参数中。 // 对于 amd loader 来说可以免去解析 factory 的操作。推荐给用 amd loader。 // !!! 用 mod.js 作为 loader 时,勿用!!!! forwardDeclaration: false, // 当开启依赖前置后有效,用来控制 amd 的内建模块是否需要保留在 deps 第二个参数中。 // 如: require, exports, module // 像 cmd 是不需要的,所以模式是 cmd 时,自动会开启。 skipBuiltinModules: false, // 当 mod 为 amd 时,以下配置才有效。 // 届时,请参考。https://github.com/amdjs/amdjs-api/blob/master/CommonConfig.md#shim- // shim: null, // 是否将全局的 require(['jquery']) 异步用法当成同步? // 当成同步,js 加载不再走 loader 而是,直接页面源码中输出 <script> 标签到页面,用 <script> 来加载。 globalAsyncAsSync: false, // 用来设置无后缀引用模块时,对模块的定义的文件查找顺序。 // 如: require('./main') // 查找顺序为:require('./main.js') require('./main.coffee') require('./main.jsx') // extList: ['.js', '.coffee', '.jsx'] });
wrap 默认 undefined.
wrap
undefined
当文件 isMod 为 true 时,会对文件以 amd 的方式包裹。
amd
可选值:
closure
false
null
mode 默认 auto 根据文件内容自动判断是 commonJs 还是 amd。不准确,建议设置其中一种。
auto
commonJs
分为两种:
baseUrl 默认为 .。配置 baseUrl, 配置,页面中的 require 路径都是基于此路径查找的。详情见:https://github.com/amdjs/amdjs-api/blob/master/CommonConfig.md#baseurl-
baseUrl
.
paths 设置引用别名。如:
paths
fis.hook('module', { paths: { libs: '/static/libs', jquery: '/static/libs/jquery' } });
那么:
require('libs/alert');
require('/static/libs/alert');
requrire('jquery');
require('/static/libs/jquery');
packages 用来配置包信息。
packages
forwardDeclaration 默认为 false, 是否依赖前置, 即 是否将 factory 中的 require 对象,前置放在 define 的第二个参数中。用 mod.js 作为 loader 时,勿用
forwardDeclaration
skipBuiltinModules 默认 false, 当开启依赖前置后有效,用来控制 amd 的内建模块是否需要保留在 deps 第二个参数中。如: require, exports, module。像 cmd 是不需要的,所以模式是 cmd 时,自动会开启。
skipBuiltinModules
shim 届时,请参考。https://github.com/amdjs/amdjs-api/blob/master/CommonConfig.md#shim-
shim
globalAsyncAsSync 默认 false, 是否将全局的 require([‘jquery’]) 异步用法当成同步?当成同步,js 加载不再走 loader 而是,直接页面源码中输出
globalAsyncAsSync
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
fis3-hook-module
Deprecated 不再更新
已被拆分成多个插件,放一起容易带来麻烦,请迁移对应的插件中。
Common Js方案请使用 fis3-hook-commonjsAMD方案请使用 fis3-hook-amdCMD方案请使用 fis3-hook-cmdfis3 已经默认不自带模块化开发支持,需要此插件来完成模块化开发的支持。
isMod为true的 js 文件自动 amd 包裹。require('./xxx')等价于require('./xxx.js').mode设置成'amd'的情况下,进行 shim 包裹。 详情看配置说明。安装
全局安装或者本地安装都可以。
启用
在 fis-conf.js 中加入以下代码。
注意
此插件已经集成对模块化资源进行 amd 包裹,无需 jswrapper
通过配置标记哪些 js
isMod为true即可.配置说明
wrap默认undefined.当文件
isMod为 true 时,会对文件以amd的方式包裹。可选值:
amd即 amd 包裹closure即闭包包裹。false或者null或者留空时不进行包裹mode默认auto根据文件内容自动判断是commonJs还是amd。不准确,建议设置其中一种。分为两种:
commonJs选用此方案,性能最好,规则更简单amd需要词法分析,时间略长。baseUrl默认为.。配置 baseUrl, 配置,页面中的 require 路径都是基于此路径查找的。详情见:https://github.com/amdjs/amdjs-api/blob/master/CommonConfig.md#baseurl-paths设置引用别名。如:那么:
require('libs/alert');就等价于require('/static/libs/alert');requrire('jquery');等价于:require('/static/libs/jquery');packages用来配置包信息。forwardDeclaration默认为false, 是否依赖前置, 即 是否将 factory 中的 require 对象,前置放在 define 的第二个参数中。用 mod.js 作为 loader 时,勿用skipBuiltinModules默认false, 当开启依赖前置后有效,用来控制 amd 的内建模块是否需要保留在 deps 第二个参数中。如: require, exports, module。像 cmd 是不需要的,所以模式是 cmd 时,自动会开启。shim届时,请参考。https://github.com/amdjs/amdjs-api/blob/master/CommonConfig.md#shim-globalAsyncAsSync默认false, 是否将全局的 require([‘jquery’]) 异步用法当成同步?当成同步,js 加载不再走 loader 而是,直接页面源码中输出