ES6项目构建

构建一个基本的ES6项目(一)---项目目录的创建 在网上观看ES6的学习视频,了解如何创建一个基础的ES6工程,包括目录结构,自动构建与服务器搭建 记录一下,供以后自己参考 我使用的git,Windows的cmd也能用,但是有一些命令不一样,如查看当前目录下的所有文件cmd里面是dir 而不是ls ,又如创建一个文件 在cmd里面是cd .>text.js 而不是touch text.js 等等,还是Linux的命令用起来方便些 ... 阅读详情

前端工程一般具有以下四个步骤:

  • 基础构架(项目文件目录结构)
  • 任务自动化(自动监听、检测、压缩、响应)
  • 编译工具(babel、webpack)
  • 代码实现
    这里写图片描述

目录结构如下

这里写图片描述

  • app(前端)
  • server(服务器)
  • tasks(构建工具)
  • -

step1:服务器端代码

在命令行输入:
express -e .(express脚手架工具,-e表示ejs模版引擎,.表示当前目录)npm install

step2:在tasks目录中创建任务js脚本,例如:编译、合并、文件更新

在命令行输入:
mkdir util
touch util/args.js

step3: 返回根目录,创建package.json文件(npm安装依赖包)

在命令行输入:
npm init(自动创建package.json文件)
touch .babelrc (创建babel编译配置文件)
touch gulpfic.babel.js(创建使用es6语法的gulp配置文件)
整个项目用到的依赖包为:
package.json文件:

{
  "name": "es6",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "babel-core": "^6.24.1",
    "babel-loader": "^7.0.0",
    "babel-preset-env": "^1.5.1",
    "babel-preset-es2015": "^6.24.1",
    "del": "^2.2.2",
    "gulp": "^3.9.1",
    "gulp-concat": "^2.6.1",
    "gulp-if": "^2.0.2",
    "gulp-live-server": "0.0.30",
    "gulp-livereload": "^3.8.1",
    "gulp-plumber": "^1.1.0",
    "gulp-rename": "^1.2.2",
    "gulp-sequence": "^0.4.6",
    "gulp-uglify": "^2.1.2",
    "gulp-util": "^3.0.8",
    "require-dir": "^0.3.2",
    "vinyl-named": "^1.1.0",
    "webpack": "^2.6.1",
    "webpack-stream": "^3.2.0",
    "yargs": "^8.0.1"
  }
}

step4: 在util/args.js中,对命令行参数进行解析

  import yargs from 'yargs';
  const args = yargs
  .option('production',{
  boolean:true,//表示选项是布尔值类型
  default:false,
  describe:'min all scripts'
  })
  //监听文件的修改
  .option('watch', {
    boolean: true,
    default: false,
    describe: 'watch all scripts'
   })
   //输出详细的命令行日志
   .option('verbose', {
    boolean: true,
    default: false,
    describe: 'log'
   })
   //强制生成sourcemaps
   .option('sourcemaps', {
    describe: 'force the creation of sroucemaps'
   })
   //设置服务器端监听的端口,默认为8080
   .option('port', {
    string: true,
    default: '8080',
    describe: 'server port'
   })
   .argv//表示输入命令行的内容以字符串的形式进行解析
   export default args;

step5: 创建命令行编译js脚本

在命令行创建 touch tasks/script.js
在script.js头部引入依赖模块:

import gulp from 'gulp';
import gulpif from 'gulp-if';//glup中处理if判断
import concat from 'gulp-concat';//glup中处理文件拼接;
import webpack from 'webpack';//webpack工具包;
import gulpwebpack from 'webpack-stream';
import named from 'vinyl-name';
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';

在命令行安装所引入的依赖包:

npm install gulp gulp-if gulp-concat webpack-stream vinyl-name gulp-livereload gulp-plumber gulp-uglify gulp-util yargs

在script.js中,创建任务;

gulp.task('scripts',()=>{
  return gulp.src(['app/js/index.js'])
    .pipe(plumber({
      errorHandle:function(){
      }
    }))
    .pipe(named())
    .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()))
})

step6: 创建模版、服务任务脚本

1、在命令行新建touch tasks/pages.js文件
在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’);//打开app目录下所有ejs文件
.pipe(gulp.dest(‘server’))
.pipe(gulpif(args.watch,livereload()))
})

2、在命令行查新建touch tasks/css.js文件
在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()))
  })

3、创建服务器端任务脚本
在命令行查新建touch tasks/server.js文件
在server.js头部引入依赖包;

  import gulp from 'gulp';
  import gulpif from 'gulp-if';
  import liveserver from 'gulp-live-server';
  import args from './util/args';//命令行参数

创建任务:

  gulp.task('server',()=>{
    if(!args.watch) return cb();//如果不在监听状态,直接返回回调函数
    var server = liveserver.new(['--harmony','server/bin/www'])//创建服务器
    server.start();
    //监听文件发生变化,
    gulp.watch(['server/public/**/*.js','server/views/**/*.ejs'],function(file){
        server.notify.apply(server,[file]);
    })
    //监听到以下文件改变时,重新启动服务器
 gulp.watch(['server/routes/**/*.js','server/app.js'],function(){
         server.start.bind(server)();
    })
  })

step7: 浏览器监听任务脚本

在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'])//如果app/**/*.js发生了改变,那么,会自动调用script.js这个脚本
    gulp.watch('app/**/*.ejs',['pages'])
    gulp.watch('app/**/*.css',['css'])
})

step8: 创建清空脚本

清空public里面的内容:
在tasks下新建claen.js文件,写入下面代码:

import gulp from 'gulp';
import del from 'del';
import args from './util/args.js'

gulp.task('clean',()=>{
  return del(['server/public','server/views'])//clean这两个文件夹
})

step9: 创建任务串联脚本

在tasks下新建bulid.js文件,写入下面代码:

import gulp from 'gulp';
//保证任务之间关联关系和顺序的包
import gulpSequence from 'gulp-sequence';
//脚本任务执行的顺序为:clean->css->pages->scripts->[browser,server]
gulp.task('bulid',gulpSequence('clean','css','pages','scripts',['browser','server']))

在tasks下新建default.js文件,写入下面代码:

import gulp from 'gulp';
gulp.task('default',['bulid']);

step10: 编写.babelrc文件

{
    "presets":["es2015"]
}   

step11: 编写gulpfile.babel.js文件

import requireDir from 'require-dir';
requireDir('./tasks');// 把tasks里面所有的文件加载进来运行;

step12: 运行检测

1、在命令行输入gulp
结果如下说明项目搭建成功:
这里写图片描述

2、当输入gulp –watch时,服务器处于监听状态,3000端口有效这里写图片描述

在app下的index.ejs中写入

这里写图片描述

在浏览器访问localhost:3000时,

这里写图片描述

3、在服务端server的app.js中,加入热更新链接的包,并且npm install安装它:
这里写图片描述

npm install connect-livereload --save-dev

4、再次检测:
在app下的index.ejs中修改html,保存,查看浏览器,不刷新就能看到你修改的html内容;

这里写图片描述

这里写图片描述

基于 express 框架快速构建的 NodeJS - ES6 - MVC 项目 基于 express 框架快速构建的 NodeJS -ES6- MVC 项目 项目GitHub地址 https://github.com/lovefive5/express-mvc 背景:作者算是重度ES6的使用者,而且之前是开发PHP,就按照以前的逻辑整理了一套MVC的初级封装(版本1.0.0,哈哈哈,后续会优化升级的), 有问题可以直接联系我。 注意: 环境变量在windows 和 mac 上有不同,想兼容的话就下载插件吧。 目录结构: ├─common │ ├─dbs 阅读详情

相关推荐

React+ES6前端项目模板的构建与实践

React是由Facebook开源的前端JavaScript库,旨在高效地构建用户界面,尤其适合单页应用程序。自2013年推出以来,其以声明式编程、虚拟DOM和组件化等概念引领了前端开发的潮流。在选择构建工具时,需要考虑以下关键因素:社区支持: 一个有着活跃社区和大量文档的构建工具能为你提供丰富的资源,如Webpack、Babel等。扩展性: 可扩展的构建工具能够适应不断增长的项目需求。性能: 高效的构建工具可以减少项目的构建时间。易用性。

weixin_33239721的博客 1029

Webpack搭建ES6开发环境

1、什么是Webpack 本质上,Webpack 是一个现代 JavaScript 应用程序的静态模块打包器(static module bundler)。在 Webpack 处理应用程序时,它会在内部创建一个依赖图(dependency graph),用于映射到项目需要的每个模块,然后将所有这些依赖生成到一个或多个 bundle。 webpack 解决什么问题? Webpack 可以做到按需加载。像 Grunt、Gulp 这类构建工具,打包的思路是:遍历源文件→匹配规则→打包,这个过程中做不到按需加载,即

FengYang_的博客 316

Webpack+React+ES6+JSX+CSS实战项目构建指南

Webpack是一种广泛使用的前端构建工具,它可以将各种静态资源如JavaScript、CSS、图片等打包成浏览器可识别的格式。它的核心功能是模块打包,这意味着可以将应用程序划分成多个模块,Webpack负责按需加载这些模块。Webpack的工作原理是通过配置文件来描述模块之间的依赖关系,并生成依赖图。然后,根据这个图,Webpack会打包所有的依赖项,并输出到一个或多个bundle文件中。

weixin_32921023的博客 756

Three.js(webgl) webpack+es6 geojson 3d地图 项目实战视频教程

three.js 是 JavaScript 编写的 WebGL 第三方库。Three.js 也是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机、光影、材质等各种对象。Three.js 实战系列,Three.js(webgl) webpack+es6 geojson 3D 地图 项目实战视频教程将制作一个基于 webpack 框架+es6 三维 3d 中国地图模型(带区间飞行线和省级中心城市光柱特效),通过实战实操,由入门到进阶,由简单至复杂,循序渐进的学习 three.js 项目开发,掌握制作 3d 场景,模型,动画,事件,特效等等,特别是 geojson 数据在 3d模型制作的重要知识点和技巧。

ES6的前端项目构建方法

文档介绍了ES6的项目基本构建方法。App前端文件, server为服务器相关文件 Tasts为相关的工具的。 Class为ejs中的类。

详解Webpack + ES6 最新环境搭建与配置

一,准备工作 1.下载node.js 和 npm 2.将镜像源替换为淘宝镜像 二,创建目录及安装webpack创建项目 在命令行中输入 npm init -y 我们看到了项目中多了一个package.json文件,它定义了这个项目中所需各种模板及项目中的配置信息。该对象的每一个成员就是当前项目的一项设置。详细设置信息请参考 https://docs.npmjs.com/files/package.json 安装webpack 全局安装webpack,在命令行输入 npm install webpack -g npm install webpack-cli -g 在webpack4中we

es6项目构建总结

    最近跟着网上的课程写了一个es6的项目,在项目搭建时遇到了不少麻烦,也百度过很多,下面总结一下项目构建中出现的问题 源代码放在了我的github上https://github.com/13660539818/ES6,还没写完,只是项目的一个框架 Q: Failed to load external moudle @babel/registerA: gulp版本问题,降低gulp的版...

chashao__的博客 307

VsCode安装和配置c/c++环境(超完整,小白专用)

1. vsCode配置C/C++环境 1. vsCode下载和安装 1. 下载Microsoft vsCode [vsCode在这里插入图片描述官网下载: https://code.visualstudio.com/ 2. 安装vsCode 3. 下载中文插件 我这边已经下载过,刚卸载但是没有重启编译器,所以界面显示了中文 2. MinGW编译器下载和配置 1. 下载MinGW 在线安装——下载MinGW-W64-install.exe(速度慢) 下载压缩包——×86_64-posix-

黄化的多多 60万+

ES6项目构建工具使用(完整版)

最近学习用ES6语法写项目,因为浏览器目前不支持ES6语法 (特别IE8以下的浏览器不支持ES5—6),无法部署到线上,必须构建支持ES6的环境, 所以重新整理下需要的开发工具。 gulp(任务自动化工具) gulp文档 bable,webpack(编译工具) npm bable专门把ES6编译成es5,es3的工具 webpack专门处理模块化项目依赖工具...

阿蔡的博客 2364

BIOS更新后PIN不可用怎么办?从原理到实操的完整修复指南

在计算机维护中,BIOS更新是常见的固件升级操作,但其引发的登录异常却常让用户措手不及。Windows Hello PIN并非传统密码,它通过TPM芯片与设备启动环境(PCR状态)强绑定,一旦主板固件或安全启动配置改变,TPM便会拒绝释放密钥,导致“由于此设备上的更改,你的PIN不再可用”。理解这一原理后,恢复路径清晰可控:优先尝试密码登录,或通过WinRE替换utilman.exe创建临时管理员,必要时还需处理BitLocker恢复密钥。本文面向系统维护与数据安全场景,系统梳理PIN失效的恢复流程与避坑方

weixin_31364787的博客 370

肖特基二极管选型参数,结构原理,工艺与注意问题总结

肖特基二极管(Schottky Diode)是一种特殊的二极管,也被称为肖特基势垒二极管。它是利用金属与半导体接触形成的金属-半导体结原理制成的。与传统的PN结二极管相比,肖特基二极管具有更低的正向压降、更高的开关速度、更高的反向恢复时间以及更好的温度稳定性等特点。本文对肖特基二极管的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。

fydar的博客 812

gulp构建es6项目

项目构建介绍 ES6 项目构建 基础架构 任务自动化(gulp) 编译工具(babel、webpack) 代码实现 基础架构 编译 es5 es3(适用于ie8) 任务自动化(gulp) 什么是任务自动化 减少人工操作,自动监听操作与响应。 什么是gulp 自动化构建工具。 gulp的作用 完工自动化,背后用 nodejs 做开发,提供了很多插件,完成不同任务。 ...

littlebirdflying的博客 651

量化 insider 爆料! 散户打板必亏?(打板必看!量化资金如何“隔日砸盘”收割散户)

量化开发 insider 爆料💥 散户追的涨停板📉,可能是机构故意做的陷阱!本文从技术视角拆解“涨停陷阱”,帮你看清市场真实逻辑🧠。

XiaoqiangClub的博客 451

es6项目构建01

es6项目模仿学习记录: 一、使用的技术 es6 + node + gulp + babel +webpack、webpack-stream 二、技术介绍 es6: node: express:node框架 gulp:任务自动化, babel:编译工具 webpack:模块化 webpack-stream :处理gulp 三、环境搭建 (1)node环境搭建

qq_21696621的博客 388

QT应用编程: 编写低功耗BLE蓝牙调试助手(Android系统APP)

一、环境介绍 QT版本: 5.12.6 编译环境: win10 64位 目标系统: Android 完整工程源码下载地址(包含APK文件):https://download.youkuaiyun.com/download/xiaolong1126626497/19051696 二、功能介绍 本软件是一款BLE蓝牙串口调试助手,支持常规的发送和接收调试,BLE是低功耗类型蓝牙,在智能家居、物联网领域使用较多。BLE低功耗蓝牙一般不能直接使用手机进行连接,手机蓝牙默认都是工作在传统蓝牙模式,无法直接连接BL..

7660

MATLAB代码实现了一个柱塞泵配流盘过流面积的计算和可视化功能

该MATLAB代码实现了一个柱塞泵配流盘过流面积的计算和可视化功能。输出曲线可直接用于验证设计的合理性(如是否存在过流面积突变或不足)。的不同范围,选择对应的几何模型计算过流面积。通过分段逻辑计算柱塞腔在不同旋转角度(过流面积在特定条件下会被限制(如。),确保结果符合物理实际。条件分支,根据旋转角度。

huanghm88的专栏 582

ES6+React+Webpack初步构建项目流程

当我们打算使用Webpack构建工具,React和ES6来开发项目的时候,构建这么一套自动化的项目的流程见下:   第一步:webpack是一个基于node的项目,我们使用命令行对webpack进行全局的安装 npm install webpack –g。可以通过webpack  –h来查看安装的版本信息。然后我们新建一个文件夹用来存放整个项目文件。为了可以在项目中使用webpack,我们需

jsdchenye的专栏 7594

caverdock如何使用,一文给你多方案教学!

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1388

基于 Gulp + Browserify 构建 ES6 环境下的自动化前端项目

随着React、Angular2、Redux等前沿的前端框架越来越流行,使用webpack、gulp等工具构建前端自动化项目也随之变得越来越重要。鉴于目前业界普遍更流行使用webpack来构建es6(ECMAScript 2015)前端项目,网上的相关教程也比较多;相对来说使用gulp来构建es6项目的中文教程就比较少。 经过一段时间的摸...

weixin_34310369的博客 253

华为OD机试真题 新系统 - 勇攀数字高峰 (Java/Py/C/C++/Js/Go)

本文整理华为 OD 机试新系统机考真题库,涵盖高频考点精析与完整题目内容,提供 C 语言、Java、C++、Python、Go、JavaScript 多语言源码实现,搭配详细解题思路讲解,并支持在线 OJ 刷题练习,助力高效备考华为 OD 机试新系统。

算法大师! 2094

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Express API ES6 Starter:快速构建 Express.js 项目的开源框架

Express API ES6 Starter:快速构建 Express.js 项目的开源框架 Express API ES6 Starter 是一个使用 ES6/ES7/ESNext 特性快速构建 Express.js API 的开源项目模板。该项目主要使用 JavaScript 语言编写。 项目基础介绍 该项目旨在为开发者提供一个功能齐全、易于定制的 Express.js 应用程序框架。它包含...

gitblog_00701的博客 577

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: js任务队列
下一篇: regexper图形化正则表达式工具
景洪在编程
博客等级 码龄9年 13粉丝 63原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值