JSON

Rails + ES6 + Angular2 前后端分离开发(一)(3)

字号+ 作者:H5之家 来源:H5之家 2016-03-26 17:00 我要评论( )

dev-ops git:(master) npm run watch-js dev-ops@0.0.1 watch-js /Users/zuozuo/edaixi/dev-ops watchify -t babelify app/assets/angular2/angular2.js -o app/assets/javascripts/bundle.js --ignore-watch='**/n

dev-ops git:(master) npm run watch-js > dev-ops@0.0.1 watch-js /Users/zuozuo/edaixi/dev-ops > watchify -t babelify app/assets/angular2/angular2.js -o app/assets/javascripts/bundle.js --ignore-watch='**/node_modules/**' --detect-globals=false --delay=0 -v 2128990 bytes written to app/assets/javascripts/bundle.js (10.44 seconds) 2128990 bytes written to app/assets/javascripts/bundle.js (0.80 seconds) 2128990 bytes written to app/assets/javascripts/bundle.js (0.71 seconds) 2128990 bytes written to app/assets/javascripts/bundle.js (0.65 seconds) 2128990 bytes written to app/assets/javascripts/bundle.js (0.59 seconds) 2128990 bytes written to app/assets/javascripts/bundle.js (0.59 seconds) 2128990 bytes written to app/assets/javascripts/bundle.js (0.58 seconds)

  从上面的结果可以看到,第一次转换需要的时间特别长 10.44s,之后每次保存引起的转换操作的时间都在 1s以内,但是随这项目代码的不断增多这个时间会越来越长,我目前在公司所做的那个项目的转换时间基本每次都在 1s 左右了。这时候就会出现一个很烦人的问题:当你保存完代码然后立刻刷新页面的时候却发现 watchify 的转换操作还没完成,也就是你不得不再次刷新页面,这实在是不能忍。

 

  幸好我们有很好的工具来解决这个问题,那就是 GitHub - guard/guard-livereload: Guard::LiveReload automatically reload your browser when 'view' files are modified.

 

  首先、安装 livereload 的浏览器插件

  可以参考 How do I install and use the browser extensions?

  然后、安装 guard 和 guard-livereload

  在 Gemfile 中添加下面的代码:

# Gemfile group :development do gem 'guard' gem 'guard-livereload', '~> 2.5', require: false end


  执行:

$ bundle install $ guard init livereload

  其中 guard init 命令会在根目录生成 Guardfile

 

  将 Guardfile 改成下面的样子

# Guardfile guard 'livereload' do watch(%r{app/assets/javascripts/bundle.js}) watch(%r{app/assets/angular2/**/.+\.html}) end


  然后启动 guard server:

$ bundle exec guard

  然后在浏览器中通过上面安装好的 livereload extension 连接 guard server

 

  现在去编辑并保存 hello_world.js 之后,浏览器在 watchify 的转换完成之后自动刷新页面,将我们从无尽的 CMD-R 中解放了出来。

 

  如果你跟我一样用的是 MacVim 的话,可以在你的 vim 配置文件 .vimrc 中加上下面这行:

  au FocusLost * silent! wa

 

  它的作用是当 vim 失去屏幕焦点是自动保存当前编辑的文件。

 

  所以你现在可以直接在 MacVim 中编辑 hello_world.js 然后,按 CMD-Tab 切换显示浏览器,然后浏览器会在 watchify 的转换完成之后自动刷新页面,这下子我们连 CTRL-S 都可以省略了。

 

  文章中所有的代码都可以在 GitHub - zuozuo/dev-ops: dev-ops with angular2 and rails 找到。

  注:后面有关部署的部分会放到下一篇文章《Rails + ES6 + Angular2 前后端分离开发(二)》去写。

 

  作者:左家庄

  原文:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评
y