ES6新纳入了很多振奋民气的新特性,真的很让人忍不住去考试测验一下。
不过,由于现在大部分的浏览器对ES6的支持程度都不是很好。
以是如果想要放心地利用一些新特性,还须要用一些工具,将ES6或者ES7的代码转为ES5的代码。
本日,就配置了一下环境,写了一个react-router,紧张是练习自己的编程能力,哈哈。


在此分享一下!

二、ES6环境搭建

搭建环境的工具有很多种,jspm,webpack,gulp等等。


我紧张是采取gulp+babel+browserify来搭建的。
详细步骤如下(以下步骤均在node环境下进行):

jsp支持es6ES6情况搭建及reactrouter进修 Docker

①新建项目,打开命令行或者git hash,输入git init.

②安装gulp,输入npm install gulp

③安装一些必须的插件,看个人须要吧。
我安装了一些: babel-preset-es2015 browserify gulp-babel gulp-concat gulp-cssnano gulp-uglify vinyl-source-stream gulp-sass

④配置gulpfile文件。

文件目录构造如下:

我的配置如下:

const gulp = require('gulp');\rconst babel = require('gulp-babel');\rconst uglify = require('gulp-uglify');\rconst sass = require('gulp-sass');\rconst rename = require('gulp-rename');\rconst cssnano = require('gulp-cssnano');\rconst concat = require('gulp-concat');\rconst browserify = require('browserify');\rconst babelify=require('babelify');\rconst source = require('vinyl-source-stream');\r// 编译并压缩js\rgulp.task('convertJS', function{\r return gulp.src('app/js/.js')\r .pipe(babel({\r presets: ['es2015','react']\r }))\r .pipe(uglify)\r .pipe(gulp.dest('dist/js'))\r})\r// 合并并压缩css\rgulp.task('convertCSS', function{\r return gulp.src('app/style/.scss')\r .pipe(sass)\r .pipe(concat('app.css'))\r .pipe(cssnano)\r .pipe(rename(function(path){\r path.basename += '.min';\r }))\r .pipe(gulp.dest('dist/style'));\r})\r// 监视文件变革,自动实行任务\rgulp.task('watch', function{\r gulp.watch('app/style/.scss', ['convertCSS']);\r gulp.watch('app/js/.js', ['convertJS', 'browserify']);\r})\r// browserify\rgulp.task(\公众browserify\公众, function {\r var b = browserify({\r entries: \"大众dist/js/app.js\公众\r });\r return b.transform(babelify)\r .bundle\r .pipe(source(\公众bundle.js\"大众))\r .pipe(gulp.dest(\公众dist/js\公众));\r});\rgulp.task('start', ['convertJS', 'convertCSS', 'browserify', 'watch']);\r

把稳,纵然这些都安装好了,运行gulp命令的时候还是会报一个未定义babel工具的错,如图:

一开始我也不知道为什么,我把编译ES6的环境单独出来(也便是把react干系的内容和插件注释掉),创造是可行的。
以是问题就出在编译react的时候了。
终极在stackoverflow上面找到了答案。

大概的意思便是,babel在编译react的时候,有一个插件被分离了出来,须要其余安装,类似于补丁之类的东西吧!
按照上面这个说法,我又去安装了一下这个,创造真的可以了,不报错了^_^。
至此,环境准备好了。

三、路由搭建

首先,你可以点击这里,对react-route有进一步的理解。

实在,只是搭建环境比教耗费韶光,搭路由参考官方的例子的话倒是很快的。
我就写了一个hello world级别的路由。
如下代码:

import React from 'react';\rimport ReactDOM from 'react-dom';\rimport { hashHistory, Route, Router } from 'react-router';\rimport { render } from 'react-dom'\r\rimport List from './list';\r\rclass Photo extends React.Component {\r render {\r return <p>hello, winty!</p>\r }\r}\r\rrender((\r <Router history={hashHistory}>\r <Route path=\公众/\"大众 component={Photo}/>\r {/ add the routes here /}\r <Route path=\公众/list\"大众 component={List}/>\r </Router>\r), document.getElementById('app'));\r

引入的List模块代码如下:

import React from 'react'\r\rclass List extends React.Component {\r render {\r return <div>hello,List</div>\r }\r}

正当我为写这么水的程序而不好意思的时候,打开浏览器,竟然。


真的就输出了hello,winty!

好吧。
我F12打开掌握台的时候,很伤心,报了两个警告:

最伤心的是,我各种找资料,都没有找到阐明、各种群上问,都没有人知道的回答我。


好吧,抱着警告不影响运行的态度,我考试测验改变url,通过路由跳到list那里去。


然而。


结果又亮瞎了。


结果什么都没有,还报错了。


容我悄悄啊。


于是我又一次各种查、各种查、各种问、各种问。


本来想问清楚了,再来写这个博客,然而。


还是办理不了。


于是只能到这里来乞助了。


博客园的大神们。


有人可以阐明一下吗?

详细代码点这里!

PS:想练习ES6的新特性,又不知道该若何搭环境的人可以参考gulpfile的代码哦。