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按需加载?
- 如何把文件分开打包,而不是打包到一个大文件中去?