ES6 项目

文章为本人总结,不完整不全面,会持续更新

项目下载          项目待完善

1. 创建根目录 es6

    创建3个并行的模块:
        app(放置前端代码)
        server(服务器目录)
        task(构建工具目录)
    第一步在app文件夹下:
        css目录
        js目录
            创建class类目录
                创建 test.js
            创建入口文件:index.js
        views目录
            初始化模块文件
                创建错误模版  error.ejs
                创建入口模版  index.ejs
                使用.ejs而不是.html是因为node的express框架,
                express框架所使用的模板引擎是.ejs,可以当做html使用
    第二步server文件夹下:
        需要使用express
        命令  express -e .
        命令  npm install
    第三步task文件夹下:
        创建util目录,存放常见的脚本
            初始化文件   args.js
    第四步初始化创建package.json
        命令  npm init
    第五步创建一个设置babel编译工具的配置文件
        文件夹名字固定为 .babelrc
        手动创建时需要写为 .babelrc. 文件夹名字会变成 .babel
    第六步创建一个gulp做构建工具
        文件名为 gulpfile.babel.js,名称是固定的
        因为使用ES6语法,如果不写gulpfile.babel.js而是gulpfile.js在执行脚本时会报错
2. 进入tasks中的args.js
        引入一个npm包来处理命令行参数
            import yargs from 'yargs';
        区分是测试环境还是生产环境
            const args=yars
                .option('production',{
                    boolean:true,
                    default:false,
                    describe:'first scripts'
                })
                是否需要监听开发环境中修改的文件
                .option('watch',{
                    boolean:true,
                    default:false,
                    describe:'watch all files'
                })
                是否需要详细输出命令行执行的日志
                .option('verbose',{
                    boolean:true,
                    default:false,
                    describe:'log'
                })
                处理映射??
                .option('sourcemaps',{
                    describe:'force the creation of sourcemaps'
                })
                设置服务器端口
                .option('port',{
                    string:true,
                    default:8080,
                    describe:'server port'
                })
                表示对输入的命令行的内容以字符串进行解析
                .argv
    创建一个脚本对js做处理
        引入包
            import gulp from 'gulp';
            import gulpif from 'gulp-if';
            import concat from 'gulp-concat';
            import webpack from 'webpack';
            import gulpWebpack from 'webpack-stream';
            import named form 'vinyl-named';
            import livereload from 'gulp-livereload';
            import plumber from 'gulp-plumber';
            import rename from 'gulp-rename';
            import uglify from 'gulp-uglify';
            import {log,color} from 'gulp-util';
            import args from './util/args';
        用gulp.task创建一个任务
            gulp.task('scripts',()=>{
                return gulp.src(['app/js/index.js'])
                .pipe(plumber({
                    errorHandle:function(){

                    }
                }))
                .pipe(named())
                .pipe(gulpWebpack({
                    module:{
                        loaders:[{
                            test:/\.js$/,
                            loaders:'babel-loader'
                        }]
                    }
                }),null,(error,stats)=>{
                    log(`Finished '${colors.cyan('scripts')}'`,stats.toString({
                        chunks:false
                    }))
                })
                .pipe(gulp.dest('server/public/js'))
                .pipe(rename({
                    basename:'cp',
                    extname:'.min.js'
                }))
                .pipe(uglify({
                    compress:{properties:false},
                    output:{'quote-keys':true}
                }))
                .pipe(gulp.dest('server/public/js'))
                .pipe(gulpif(args.watch,livereload()))
            })
    创建模版、服务任务脚本
        在tasks下新建一个pages.js文件
        引入包
            import gulp from 'gulp';
            import gulpif from 'gulp-if';
            import livereload from 'gulp-livereload';
            import args from './util/args';
        创建任务
            gulp.task('pages',()=>{
                return gulp.src('app/**/*.ejs')
                .pipe(gulp.dest('server'))
                .pipe(gulpif(args.watch,livereload()))
            })
        在task下新建一个 css.js 文件
        引入包
            import gulp from 'gulp';
            import gulpif from 'gulp-if';
            import livereload from 'gulp-livereload';
            import args from './util/args';
        创建任务
            gulp.task('css',()=>{
                return gulp.src('app/**/*.css')
                .pipe(gulp.dest('server/public'))
                .pipe(gulpif(args.watch,livereload()))
            })
        在task下新建一个 server.js
        引入包
            import gulp from 'gulp';
            import gulpif from 'gulp-if';
            import liveserver from 'gulp-live-server';
            import args from './util/args';
        创建任务
        gulp.task('serve',(cb)=>{
            if(!args.watch) return cb();
            var server=liveserver.new([
                '--harmony','server/bin/www'
            ])
            server.start(); // 启动服务器
            js ejs改变的监听
            gulp.watch(['server/public/**/*.js','server/view/**/*.ejs'],function(file){
                server.notify.apple(server,[file]);
            })
            需要重新服务器
            gulp.watch(['server/routes/**/*.js','server/app.js'],function(){
                server.start.bind(server())
            })
        })
3.文件自动监听
    在tasks中新建browser.js
    引入包
        import gulp from 'gulp';
        import gulpif from 'gulp-if';
        import gutil from 'gulp-util';
        import args from './util/args';
    创建任务
        gulp.task('browser',(cb)=>{
            if(!args.watch) return cb();
            gulp.watch('app/**/*.js',['scripts']);
            gulp.watch('app/**/*.ejs',['pages']);
            gulp.watch('app/**/*.css',['css']);
        })
    在tasks中新建一个clean.js
    引入包
        import gulp from 'gulp';
        import del from 'del';
        import args from './util/args';
    创建任务
        gulp.task('clean',()=>{
            return del(['server/public','server/views'])
        })
4.关联所有文件
    在tasks下新建 build.js 文件
    引入包
        import gulp from 'gulp';
        import gulpSequence from 'gulp-sequence';
    创建任务
        serve 一定要放到最后,处于同一级的用[]写在一起,需要注意先后顺序
        gulp.task('build',gulpSequence(
            'clean',
            'css',
            'pages',
            'scripts',
            ['browser','serve']
        ))
5.默认情况在命令行只输入 gulp 没有后任务时,所以需要
    在tasks创建 default.js 文件
    引入包
        import gulp from 'gulp';
    创建任务
        gulp.task('default',['build'])
6.编写 gulpfile.babel.js
    引入包
        import requireDir from 'require-dir';
    创建任务
        requireDir('./tasks');
7.编写 .babelrc
    {"presets":["es2015"]}
本项目需要安装的包一共有
    npm install
    gulp gulp-if gulp-concat webpack webpack-stream
    vinyl-named gulp-livereload gulp-plumber gulp-rename
    gulp-uglify gulp-util yargs gulp-live-server del gulp-util
    babel-loader babel-core babel-preset-env
    require-dir babel-preset-es2015 gulp-sequence

    --save-dev




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值