使用 ES6 进行开发

news/2024/7/10 23:33:44 标签: gulp, es6

es6-flow.png" alt="ES6" title="" style="margin-top:24px;margin-bottom:24px;" />

ES6有很多新特性让人忍不住想去尝试,然而各种浏览器的支持程度还不足以让我们直接在浏览器上执行ES6的代码,好在babel可以帮助我们将ES6代码转码成ES5,再利用bowserify的帮助,我们就可以尽情体验ES6带来的愉悦了。P.S. 构建工具使用的是gulp

目的

制定一个流程之前还是先得想好我们想让这个流程是一个什么样子。

首先,开发代码和部署代码是分开的,比如我们在/app目录下开发,然后通过gulp构建之后,代码将存放在 /dist 目录下。也就是说打开 /dist 目录下的文件,是可以直接在浏览器上运行的。

那么我们可以约定这个流程如下:

1. 开发

在app目录下开发,这时 /js 目录下是ES6的代码。

/app
-- /js
---- app.js
---- util.js
-- /css
---- base.css
---- app.css
/dist
-- /js
-- /css
-- index.html
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2. 构建

使用gulp将js转码成ES5并压缩,将css合并并压缩。

/app
-- /js
---- app.js
---- util.js
-- /css
---- base.css
---- app.css
/dist
-- /js
---- app.js // 已经转码成了ES5
---- util.js // 已经转码成了ES5
-- /css
---- all.min.css // base.css + app.css 合并、压缩并重命名的文件
-- index.html
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

3. 使用 bowserify

如果我们使用了ES6中的 module,通过 importexport 进行模块化开发,那么通过babel转码后, import 、 export 将被转码成符合CMD规范的 require 和 exports 等,但是浏览器还是不认识,这时可以使用 bowserify 对代码再次进行构建。产生文件为 bundle.js

/app
-- /js
---- app.js
---- util.js
-- /css
---- base.css
---- app.css
/dist
-- /js
---- app.js // 已经转码成了ES5
---- util.js // 已经转码成了ES5
---- bundle.js // 实际引用的js文件
-- /css
---- all.min.css // base.css + app.css 合并、压缩并重命名的文件
-- index.html
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

所以一开始 index.html 中引用的js文件和css文件就是 bundle.js 和 all.min.css

确定好流程后,就开始搭建开发环境吧。

一、新建项目

项目结构如下:

/app
-- /js
-- /css
/dist
-- /js
-- /css
-- index.html
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

我们的代码在 /app 目录下开发,转码、合并、压缩完之后保存在 /dist 下。

二、配置环境

1) 初始化 npm

首先进入根目录,初始化项目

$ npm init
  • 1

2) 安装 gulp

$ npm install gulp --save-dev
  • 1

3) 安装 gulp-babel

Babel是一个广泛使用的ES6转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。

命令:

npm install --save-dev gulp-babel babel-preset-es2015
  • 1

其中babel -preset-es2015 是ES2015转码规则,如果代码中含有es7的内容,可以继续安装ES7不同阶段语法提案的转码规则

# ES2015转码规则
$ npm install --save-dev babel-preset-es2015

# react转码规则
$ npm install --save-dev babel-preset-react

# ES7不同阶段语法提案的转码规则(共有4个阶段),选装一个
$ npm install --save-dev babel-preset-stage-0
$ npm install --save-dev babel-preset-stage-1
$ npm install --save-dev babel-preset-stage-2
$ npm install --save-dev babel-preset-stage-3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

4) 安装其他gulp工具

以下是根据流程所需要安装的全部工具

$ npm install gulp-rename gulp-concat gulp-uglify gulp-minify-css browserify vinyl-source-stream --save-dev
  • 1
  • gulp-rename 
    重命名文件
  • gulp-concat 
    合并文件
  • gulp-uglify 
    压缩js文件
  • gulp-minify-css 
    压缩css文件
  • browserify 
    让你使用类似于 node 的 require() 的方式来组织浏览器端的 Javascript 代码
  • vinyl-source-stream 
    将Browserify的bundle()的输出转换为Gulp可用的vinyl(一种虚拟文件格式)流

至此环境已经搭建好了。接下来我们需要配置gulp,让我们的工作更有效率。

三、配置 gulp

打开 gulpfile.js,编辑代码如下

const gulp = require('gulp');
const babel = require('gulp-babel');
const uglify = require('gulp-uglify');
const rename = require('gulp-rename');
const minifyCss = require('gulp-minify-css');
const concat = require('gulp-concat');
const browserify = require('browserify');
const source = require('vinyl-source-stream');

// 编译并压缩js
gulp.task('convertJS', function(){
  return gulp.src('app/js/*.js')
    .pipe(babel({
      presets: ['es2015']
    }))
    .pipe(uglify())
    .pipe(gulp.dest('dist/js'))
})

// 合并并压缩css
gulp.task('convertCSS', function(){
  return gulp.src('app/css/*.css')
    .pipe(concat('app.css'))
    .pipe(minifyCss({compatibility: 'ie8'}))
    .pipe(rename(function(path){
      path.basename += '.min';
    }))
    .pipe(gulp.dest('dist/css'));
})

// 监视文件变化,自动执行任务
gulp.task('watch', function(){
  gulp.watch('app/css/*.css', ['convertCSS']);
  gulp.watch('app/js/*.js', ['convertJS', 'browserify']);
  gulp.watch('dist/*.html', ['convertJS']);
})

// browserify
gulp.task("browserify", function () {
    var b = browserify({
        entries: "dist/js/app.js"
    });

    return b.bundle()
        .pipe(source("bundle.js"))
        .pipe(gulp.dest("dist/js"));
});

gulp.task('start', ['convertJS', 'convertCSS', 'browserify', 'watch']);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

通过 watch,我们可以在保存完代码之后,让gulp自动帮我们将代码构建一遍,而不用自己再敲一遍命令。

开始 gulp

$ gulp start
  • 1

现在就开始ES6开发之旅吧


http://www.niftyadmin.cn/n/1320518.html

相关文章

golang 读取配置文件

unix 风格的配置文件 [default] path c:/go version 1.44[test] num 666 something wrong #注释1 #fdfdfd fdfdfd 注释整行 refer refer //注释3config.go package confimport ("bufio""io""os""strings" )const midd…

ES6的开发环境搭建

在搭建es6开发环境之前,先简单介绍一下es6。ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成…

WndProc(ref Message m)方法

protectedvirtualvoidWndProc( refMessage m);参数 m 与当前 Windows 消息相关联的 Message。 备注 当窗口消息发送到窗口的句柄时,将调用此方法。对继承者的说明: 重写此方法以实现特定消息处理。对未处理的消息调用 base.WndProc。示例 [Visu…

官方 React 快速上手脚手架 create-react-app

此文简单讲解了官方 React 快速上手脚手架的安装与介绍。1. React 快速上手脚手架 create-react-app 为了快速地进行构建使用 React 的项目,FaceBook 官方发布了一个无需配置的、用于快速构建开发环境的脚手架工具 create-react-app。当然,如果你需要 Re…

S60中日志文件写入函数

一个在S60中日志文件写入的函数,适合记载程序在运行中的行为。 函数如下: #define__DEBUG__#ifdef __DEBUG__ _LIT(KLogFileName, "c:\\data\\log.txt"); // 日志文件存放位置voidCTestRmsDbGuiAppUi::LogInfo(constTDesC&aBuf) { …

React脚手架的使用--5步生成React+ES6+Webpack项目

阅读数:21446本例方法利用yeoman快速搭建Reactwebpackes6脚手架由实践总结一、安装最新的node.js原博文是这样写说的npm install -g n //首先安装n模块 n stable //升级node.js到最新稳定版 n 5.0.0 //或者指定版本升级 node -v //检查更新是否成功我自己是去重新下…

[导入]Win2003连接不上数码照相机

昨天是个节日,媳妇准备了一个水果拼盘,挺好看的,那么就拍下来,想拿上来给大家共享,那就得从照相机中下载。自从前一向,换了机器以后,就没有用过照相机,麻烦,还得重新按照…

webpack从零开始第1课:安装webpack和webpack-dev-server

立即登录webpack从零开始第1课:安装webpack和webpack-dev-serverwebpack-dev-server webpack advance100 2017年12月22日发布赞 | 2收藏 | 352.5k 次浏览webpack目录第1课: 安装webpack和webpack-dev-server第2课: 配置文件第3课: 做为node的一个模块来使用第4课: 插件篇第…