zoukankan      html  css  js  c++  java
  • es6

    1.项目构建

    通过git命令创建项目文件:es6下包含app、server、tasks;app文件包含一个项目中的js、css和view文件;tasks文件夹下包含util文件夹;package.json(npm init创建)

    app中的js=》入口文件index.js和class文件夹=》test.js

         views=》错误模板文件error.ejs和其他index.ejs基本处理的入口文件

    (初始化文件命令:touch )

    server下创建的文件夹需要提前安装express脚手架,它依赖于node所以要提前去node官网去安装下载安装包

    安装命令:express -e .   

    注意:遇到了问题报express: command not found,解决方案参考:http://blog.csdn.net/dai_jing/article/details/38087443

    执行 npm install 去自动安装服务器代码

    构建目录tasts(处理文件的合并、目录的更新等)=》util(放置常见的脚本)=》args.js

    npm init创建package.json

    touch .babelrc(babel编译的时候要去读取配置)

    touch gulpfile.babel.js(使用es6所以加babel)

    2.args.js

    import yargs from 'yargs';
    
    //创建命令行参数
    const args = yargs
    
        .option('production',{
            boolean:true,
            default:false,
            description:'选择线上环境,不选默认开发环境 -production'
        })
    
        .option('watch',{
            boolean:true,
            default:false,
            description:'监听文件是否变动,是否需要自动编译'
        })
    
        .option('verbose',{
            boolean:true,
            default:false,
            description:'log'
        })
    
        .option('sourcemaps',{
            description:'强制生成sourcemaps'
        })
    
        .option('port',{
            string:true,
            default:8000,
            description:'设置服务器访问端口'
        })
    
        .argv   //设置的命令以字符创去解析
    View Code

    3.构建目录tasks下创建script.js(touch)

    在文件中引入需要的包,然后在命令行安装 npm install yargs gulp gulp-if gulp-concat webpack webpack-stream vinyl-named gulp-livereload gulp-plumber gulp-rename gulp-uglify gulp-util --save-dev(安装慢、不成功、有问题,可以通过npm镜像解决问题例如淘宝镜像。。)

    注意报错(

    npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
    npm WARN deprecated minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
    npm WARN deprecated graceful-fs@1.2.3: graceful-fs v3.0.0 and before will fail o n node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible . Use 'npm ls graceful-fs' to find it in the tree.

    ):已是4.6.1,没处理 解决参考:https://segmentfault.com/q/1010000005749798

    import gulp from 'gulp';
    import gulpif from 'gulp-if';       //处理if判断
    import concat from 'gulp-concat'; //处理字符创拼接
    import webpack from 'webpack';
    import gulpWebpack from 'webpack-stream';
    import named from 'vinyl-named'; //文件命名
    import livereload from 'gulp-livereload'; //热加载
    import plumber from 'gulp-plumber'; //处理文件信息流
    import rename from 'gulp-rename'; //处理文件重命名
    import uglify from 'gulp-uglify'; //处理文件压缩
    import {log,colors} from 'gulp-util';//在命令行工具输出的包
    import args from './util/args'; //自己编辑的对命令行参数做解析的包
    
    gulp.task('scripts',() => {
        return gulp.src(['app/js/index.js'])
            .pipe(plumber({
                errorHandler:function () {
    
                }
            }))
            .pipe(named())
            //js的编译
            .pipe(gulpWebpack({
                module:{
                   loaders:[{
                       test:/.js$/,
                       loader:'babel'
                   }]
                }
            },null,(err,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()))
    })
    View Code

    3.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()))
    })
    View Code

    4.tasks文件夹下创建处理模板的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()))
    })
    View Code

    5.tasks文件夹下创建服务器的脚本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();
    
           gulp.watch(['server/public/**/*.js','server/views/**/*.ejs'],function () {
               server.notify.apply(server,[file]);
           })
    
        //当路由。。发生变化需要重启才能监听服务器
            gulp.watch(['server/routes/**/*.js','server/app.js'],function () {
                server.start.bind(server)();
            })
    })
    View Code

    6.tasks文件夹下创建脚本browser.js

    import gulp from 'gulp';
    import gulpif from 'gulp-if';
    import gutil from 'gulp-util';  //gulp函数集合常用工具
    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']);
    });
    
    //当文件创建后需要重新编译入server的时候要将新的文件覆盖掉原来的,所以要清空指定的文件,所以要创建clean.js
    View Code

    7.下载新的依赖

    npm install del gulp-util gulp-live-server --save-dev

    8..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'])
    })
    View Code

    9..tasks文件夹下创建定义串起来的任务的先后顺序build.js

    import gulp from 'gulp';
    import gulpSequence from 'gulp-sequence'; //定义先后顺序的包
    
    gulp.task('build',gulpSequence('clean','css','pages','scripts',['browser','serve']));
    View Code

    安装包 npm install gulp-sequence --save-dev

    10..tasks文件夹下创建default.js

    import gulp from 'gulp';
    
    gulp.task('default',['build']);
    View Code

    11.执行gulp

    注意报错:

    dingqi@LAPTOP-SV6SV5RV MINGW64 ~/Desktop/es6
    $ gulp
    [23:13:45] Failed to load external module babel-register
    [23:13:45] Failed to load external module babel-core/register
    [23:13:45] Failed to load external module babel/register
    [23:13:45] Using gulpfile ~Desktopes6gulpfile.babel.js
    [23:13:46] Task 'default' is not in your gulpfile
    [23:13:46] Please check the documentation for proper gulpfile formatting

    解决方案:

    npm install babel-loader babel-core babel-preset-env --save-dev

    gulpfile.babel.js编辑:

    import requireDir from 'require-dir'; //引入文件的包
    
    requireDir('./tasks'); //引入所以的文件
    View Code

    安装包 npm install require-dir --save-dev

    bablerc编辑:

    {
      "presets": ["es2015"]
    }
    View Code

    安装包 npm install babel-preset-es2015 --save-dev

    执行gulp可以成功

    12.执行gulp --watch  //加watch可以对文件监听,不会只执行一次

    13.去浏览器打开localhost:3000

    编辑app=》views=》index.ejs

    !+tab回车快速创建页面模板

    暂时手动刷新

    14.在server下的入口app.js文件下加上

    app.use(require('connect-livereload')()); //添加自动刷新
    位置:
    app.use(logger('dev'));
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: false }));
    app.use(cookieParser());
    app.use(express.static(path.join(__dirname, 'public')));
    app.use(require('connet-livereload')());
    app.use('/', index);
    app.use('/users', users);
    
    // catch 404 and forward to error handler
    app.use(function(req, res, next) {
      var err = new Error('Not Found');
      err.status = 404;
      next(err);
    });
    View Code

    终止服务 Ctrl+c

    安装包 npm install connect-livereload --save-dev

    15.测试

    gulp --watch //执行

    16.写入函数

    进入app=》js=》index.js

    编辑:

    class Test{
        constructor(){
            this.a = 'hello world';
        }
    }
    
    let test = new Test();
    
    document.body.innerHTML = test.a;
    View Code

    在app=》views=》index.ejs页面引入

    <script src="../js/index.js"></script>

    17.打开浏览器已经更新

    //构建工具部分完成!

  • 相关阅读:
    团队项目-第一阶段冲刺7
    团队项目-第一阶段冲刺6
    Spring Boot 揭秘与实战(七) 实用技术篇
    Spring Boot 揭秘与实战(七) 实用技术篇
    Spring Boot 揭秘与实战(六) 消息队列篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(五) 服务器篇
    Spring Boot 揭秘与实战(四) 配置文件篇
  • 原文地址:https://www.cnblogs.com/QIQIZAIXIAN/p/7236366.html
Copyright © 2011-2022 走看看