JSON

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

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

// app/assets/angular2/components/hello_world.jsimport {Component} from 'angular2/core';@Component({selector: 'helloWorld',template: 'Hello World !'})export class HelloWorldComponent {constructor() {

// app/assets/angular2/components/hello_world.js import {Component} from 'angular2/core'; @Component({ selector: 'helloWorld', template: ' Hello World ! ' }) export class HelloWorldComponent { constructor() { } }

// app/assets/angular2/bootstrap.js import 'zone.js/lib/browser/zone-microtask'; import 'reflect-metadata'; import 'babel-polyfill'; import {bootstrap} from 'angular2/platform/browser' import {HelloWorldComponent} from './components/hello_world' // bootstrap from AppComponent document.addEventListener("DOMContentLoaded", () => { bootstrap(HelloWorldComponent); }) // app/assets/angular2/angular2.js require('./bootstrap.js')


  NPM Scripts

  将 package.json 中 scripts 部分改成下面的代码:

"scripts": { "bundle": "browserify -t babelify app/assets/angular2/angular2.js -o app/assets/javascripts/bundle.js", "watch-js": "watchify -t babelify app/assets/angular2/angular2.js -o app/assets/javascripts/bundle.js --ignore-watch='**/node_modules/**' --detect-globals=false --delay=0 -v", "start": "npm run bundle & npm run watch-js & rails s", "test": "echo \"Error: no test specified\" && exit 1" },

  关于 npm scripts 的资料可以参考:https://docs.npmjs.com/misc/scripts

 

  上面的配置新增了三个npm script, 分别是:

  •   npm run bundle

  •   # 用 Browserify 和 Babelify 将 ES6 转换成 ES5

      # app/assets/angular2/angular2.js -> app/assets/javascripts/bundle.js

  •   npm run watch-js
  •   # 用 Watchify 监控 app/assets/angular2 下面的文件变化,并转换成ES5

  •   npm start
  •   # 执行 npm run bundle, npm run watch-js 并启动 rails-server

     

      加载 bundle.js 到 application.js 中

      在 app/assets/javascripts/application.js 末尾添加下面的代码

    //= require bundle


      然后在项目根目录下执行 npm start

    dev-ops git:(master) npm start > dev-ops@0.0.1 start /Users/zuozuo/edaixi/dev/dev-ops > npm run bundle & npm run watch-js & rails s > dev-ops@0.0.1 watch-js /Users/zuozuo/edaixi/dev/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 > dev-ops@0.0.1 bundle /Users/zuozuo/edaixi/dev/dev-ops > browserify -t babelify app/assets/angular2/angular2.js -o app/assets/javascripts/bundle.js => Booting Puma => Rails 5.0.0.beta3 application starting in development on :3000 => Run `rails server -h` for more startup options => Ctrl-C to shutdown server Puma starting in single mode... * Version 3.0.2 (ruby 2.3.0-p0), codename: Plethora of Penguin Pinatas * Min threads: 5, max threads: 5 * Environment: development * Listening on tcp://localhost:3000 Use Ctrl-C to stop

      注:如果你之前启动的rails server还在运行的话,你需要先用CTRL-C 将它关掉,然后再执行npm start,从上面终端中显示的信息可以看到 npm start 确实如上文所说的那样执行了三个命令

     

      好了,现在在浏览器中访问页面: :3000/

      页面显示出了 Hello World。

      到这里我们的 Hello World 程序就大功告成了。

     

      使用 livereload 实现页面自动刷新

     

      上面我们实现了用 watchify 监控js文件的变化,编辑完 JS 代码保存之后 watchify 会自动将我们写的 es6 代码转换成 es5,这样当我们刷新页面的时候加载的就是最新的 JS。

     

      下面是在我的电脑上执行 npm run watch-js 之后,我多次保存 hello_world.js,watchify 自动编译的输出结果。

     

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

    相关文章
    网友点评
    =