Browserify 打包尝试。
本机环境:
- OS: Yosemite 10.10.2
- Git: 1.9.5
- Nodejs: 0.10.32
- 使用cnpm代替npm
初始文件夹结构
初始文件夹结构如下:
|
|
app.js暂时为空,index.html为最基本html结构,引入app.js。
|
|
在app.js中增加简单的代码alert('hello browserify!'),在浏览器中打开页面,可见弹出提示。
下载并保存Browserify到项目
首先,使用npm init命令生成package.json文件。
然后,使用以下命令下载Browserify并保存为开发依赖包。
|
|
完成后,package.json中应该会增加下面的部分:
|
|
Browserify 和NPM
使用npm安装的依赖包,Browserify可以自动识别。以jQuery为例:
|
|
下载完成后,在index.html增加:
|
|
然后,在app.js中对main这个div作简单处理:
|
|
如果这时在浏览器中打开index.html是会报错的,因为浏览器本身不懂得处理文件之间的依赖关系,需要使用Browserify打包文件后才可以看到效果。
使用Browserify打包文件
首先,把index.html引入的js文件从app.js改为bundle.js。
|
|
bundle.js从哪里来呢?
在package.json中增加以下部分:
|
|
然后在命令行运行以下命令:
|
|
完成以后可以发现,文件夹下新增了bundle.js,这时候打开index.html应该就可以正常看到文字了。
|
|
这个命令所做的,就是把app.js所依赖的所有文件都打包到bundle.js里面去。打开bundle.js可以看到app.js和jQuery的内容。
使用Watchify实现实时文件打包
使用npm run build命令,只会在运行之后打包一次文件。在开发的时候每做一次改动,就跑一次这个命令,显然不现实。所以在项目中安装Watchify这个工具来实现实时文件打包。
|
|
|
|
然后在package.json文件中增加watch指令:
|
|
现在,在命令行运行npm run watch,并对文件做一些改动,就可以实时见到效果了。
尝试增加自己的模块
Browserify可以使用通过npm下载的包,非常方便。但它的用处绝不仅于此。在开发的时候,把自己的代码模块化,然后export出去,在Browserify中也可以使用require来获得。
现在,把问候语强化成一个小模块salutation.js,放在utils文件夹下。
|
|
在app.js中引入这个模块,并使用:
|
|
不断刷新页面可见效果。
主观使用感受
- 直接
module.exports输出模块,require使用模块,直观方便 - 和backbone一起使用的时候,是否有办法实现css, js按需加载?
- 如何把文件分开打包,而不是打包到一个大文件中去?