nodejs下用es6编程babel和gulp的配合应用

简介: 每一个程序员都有一颗全栈的心,node和es6满足了尤其是前端的憧憬。node下用express框架,实现一个简单的mvc。

每一个程序员都有一颗全栈的心,node和es6满足了尤其是前端的憧憬。

node下用express框架,实现一个简单的mvc。当然用es6编程就涉及到es6到es5的转换。即使是node6 对es6实现了百分之九十四的支持也有那么一点没有实现,比如import等,所有就需要转换,用babel

安装babel

npm install  babel-core -g
或者
npm install --save-dev babel-core
在安装

npm install --save-dev babel-preset-es2015
当然有babel-preset-es2016 但是 使用 2016是 运行babel-node  就有有错误 improt 不支持



还是老实的用2015

需要在目录下面被子.babelrc 文件

{
  "presets": ["es2015", "stage-0"]
}
stage-0 有 0, 1, 2, 3  。stage-0包含了后面3个

class Base {
    base() {
        console.log(23);
    };
}

module.exports = Base;

import Base from './Base';

class app extends Base {
    son () {
        this.base()
    }
}

var a = new app();
a.son();

如此就能正确输出了,当然最好需要转换成es5

运行命令 babel 

babel ./src --out-dir ./core

也可以放到

package.json 里

"scripts": {
    "build": "babel --watch=./src --out-dir ./core",
    "start": "node ./bin/www"
  },
运行npm run build

这样做是很费劲的要是有文件新建或者修改,就要再次运行,最好的还是加入gulp对文件进行监听就好了,自动转换。

babel也有watch命令 测试发现对文件 目录不起作用,需要准的文件,如

babel --watch=./src/test.js --out-dir ./core

开发需要用到的工具

  "devDependencies": {
    "babel-cli": "^6.22.2",
    "babel-preset-es2016": "^6.22.0",
    "babel-preset-stage-0": "^6.22.0",
    "browserify": "^14.0.0",
    "gulp": "^3.9.1",
    "gulp-babel": "^6.1.2",
    "gulp-plumber": "^1.1.0",
    "gulp-sourcemaps": "^2.4.0",
    "gulp-streamify": "^1.0.2",
    "gulp-strip-comments": "^2.4.3",
    "gulp-watch": "^4.3.11",
    "vinyl-source-stream": "^1.1.0"
  }


var gulp = require('gulp'),
    babel = require('gulp-babel'),
    watch = require('gulp-watch'),  //监听
    plumber = require('gulp-plumber'),  //错误管理 提示
    sourcemaps = require('gulp-sourcemaps'),
    strip = require('gulp-strip-comments'), //删除注释
    streamify = require('gulp-streamify'),  //只支持 buffer 的插件直接处理 stream


gulp 执行的

    path = {
        src: {
            js: 'src/**/*.js'
        },
        dist: {
            js: "core/"
        }
    };

gulp.task('6to5', function () {
    gulp.src(path.src.js)  // 多个文件目录  参数为数组
        .pipe(watch(path.src.js))
        .pipe(plumber())
        .pipe(sourcemaps.init())
        .pipe(strip())  //去除注释
        .pipe(streamify(babel()))
        .pipe(sourcemaps.write({addComment: false}))  
        .pipe(plumber.stop())  
        .pipe(gulp.dest(path.dist.js));
});

运行gulp watchnode 

gulp.task('watchnode', ['6to5'], function (){
    gulp.watch([path.src.js], [babel]);
});
生成对应文件如下:



这样就可以畅爽的写es6了

BaseDao


import connect from '../../config/connect';

class BaseDao {
    //查询
    query(field, col, callback) {
        connect.open(function(err, db) {
          
        });
    }

    //保存 新建
    save(field, col, callback) {
        connect.open(function(err, db) {
        });
    }

}

module.exports = BaseDao;

对用户操作 UserDao
import nodeUtil from 'util';
import connect from '../../config/connect';
import BaseDao from './BaseDao';
import user from '../models/User';

//继承Dao
class UserDao extends BaseDao {
      //获取用户信息 登录等
    getUser(user, callback) {
        this.query(user, 'users', callback);
    }
    //普通用户注册
    setUser (user, callback) {
        this.saveUser(user, 'users', callback);
    }
}

module.exports = UserDao;


route 路由 routes.js

import express, { Router } from 'express';
import csurf from 'csurf';

import util  from '../lib/util';
import UserDao from '../dao/UserDao';

const router = Router();
const userDao = new UserDao(); //实例化UserDao
router.post('/reg', function(req, res) {

    let pwd = util.mix(req.body.pwd);
    let User = {
        email: req.body.name,
        pwd: pwd
    }
    userDao.setUser(User, function(err, user){
        console.log(err);
    });
});

转换后的 BaseDao









有需要的交流的可以加个好友


相关文章
|
4月前
|
监控 负载均衡 JavaScript
有哪些有效的方法可以优化Node.js应用的性能?
有哪些有效的方法可以优化Node.js应用的性能?
279 69
|
4月前
|
JavaScript 前端开发
如何减少Node.js应用中的全局变量?
如何减少Node.js应用中的全局变量?
158 43
|
4月前
|
监控 算法 JavaScript
公司局域网管理视域下 Node.js 图算法的深度应用研究:拓扑结构建模与流量优化策略探析
本文探讨了图论算法在公司局域网管理中的应用,针对设备互联复杂、流量调度低效及安全监控困难等问题,提出基于图论的解决方案。通过节点与边建模局域网拓扑结构,利用DFS/BFS实现设备快速发现,Dijkstra算法优化流量路径,社区检测算法识别安全风险。结合WorkWin软件实例,展示了算法在设备管理、流量调度与安全监控中的价值,为智能化局域网管理提供了理论与实践指导。
112 3
|
11月前
|
JavaScript 前端开发 API
探索后端技术:Node.js的优势和实际应用
【10月更文挑战第6天】 在当今数字化时代,后端开发是任何成功软件应用的关键组成部分。本文将深入探讨一种流行的后端技术——Node.js,通过分析其核心优势和实际应用案例,揭示其在现代软件开发中的重要性和潜力。
538 2
|
6月前
|
JavaScript Ubuntu Linux
如何在阿里云的linux上搭建Node.js编程环境?
本指南介绍如何在阿里云Linux服务器(Ubuntu/CentOS)上搭建Node.js环境,包含两种安装方式:包管理器快速安装和NVM多版本管理。同时覆盖全局npm工具配置、应用部署示例(如Express服务)、PM2持久化运行、阿里云安全组设置及外部访问验证等步骤,助你完成开发与生产环境的搭建。
|
10月前
|
监控 JavaScript 算法
如何使用内存监控工具来定位和解决Node.js应用中的性能问题?
总之,利用内存监控工具结合代码分析和业务理解,能够逐步定位和解决 Node.js 应用中的性能问题,提高应用的运行效率和稳定性。需要耐心和细致地进行排查和优化,不断提升应用的性能表现。
367 77
|
10月前
|
JavaScript
如何使用内存快照分析工具来分析Node.js应用的内存问题?
需要注意的是,不同的内存快照分析工具可能具有不同的功能和操作方式,在使用时需要根据具体工具的说明和特点进行灵活运用。
318 62
|
10月前
|
存储 缓存 JavaScript
如何优化Node.js应用的内存使用以提高性能?
通过以上多种方法的综合运用,可以有效地优化 Node.js 应用的内存使用,提高性能,提升用户体验。同时,不断关注内存管理的最新技术和最佳实践,持续改进应用的性能表现。
482 62
|
10月前
|
存储 缓存 监控
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
275 31
|
10月前
|
JavaScript 前端开发 API
深入理解Node.js事件循环及其在后端开发中的应用
本文旨在揭示Node.js的核心特性之一——事件循环,并探讨其对后端开发实践的深远影响。通过剖析事件循环的工作原理和关键组件,我们不仅能够更好地理解Node.js的非阻塞I/O模型,还能学会如何优化我们的后端应用以提高性能和响应能力。文章将结合实例分析事件循环在处理大量并发请求时的优势,以及如何避免常见的编程陷阱,从而为读者提供从理论到实践的全面指导。