构建node项目

github地址

https://github.com/haoyongliang/quickly-create-node-project.git

创建最基本的node项目

1.全局安装express

  1. npm install -g express

2.全局安装express-generator

  1. npm install -g express-generator

(输入express –help 测试是否安装成功)

3.进入到工程父目录

  1. cd [工程父目录名]

4.快速创建工程结构

  1. express -t [模板引擎名:ejs/jade] [工程名]

我一般是用express -e mypro

5.修改package.json,将里面的ejs依赖删除

6.安装node_modules

执行命令 node install
或者执行 npm install--production,只安装dependencies,不安装devdependencies

7. 安装supervisor

项目代码修改或者down机需要重启服务器,我使用的是supervisor,还可以用nodemon

  1. npm install --save supervisor

修改package.json

  1. "start": "supervisor ./bin/www"

8. 模板引擎和模板的修改

  1. 安装nunjucks模板引擎
  1. npm install --save nunjucks
  1. 在项目根目录添加config.js,内容如下
  1. var path = require('path')
  2. module.exports = {
  3. viewPath: path.join(__dirname, 'views')
  4. }
  1. 替换app.js中的模板引擎,将ejs修改为nunjucks
  1. var nunjucks = require('art-template');
  2. // 配置使用 NunJucks 模板引擎
  3. nunjucks.configure(config.viewPath, {
  4. autoescape: true,
  5. express: app,
  6. watch: true,
  7. noCache: false
  8. })
  1. 修改模板文件

    • 找到文件:views/index.ejs, views/error.ejs
    • 将文件后缀ejs修改为html
    • 将模板文件里面的<%= xx %>替换成{{ xxx}}
  2. 修改涉及到模板渲染的js:app.js,router/index.js

    • 将其中的render("xxx")加后缀修改成render("xxx.html")

9. 修改路由

  1. 在项目根目录(app.js所在目录)添加controllers目录,并在目录下添加index.js,用于存放路由的具体业务逻辑
  1. module.exports.homePage = (req, res, next) => {
  2. res.render('index.html',{title:'Express'});
  3. }
  1. 修改routes/indexs.js路由,引用controllers/index.js
  1. var express = require('express');
  2. var router = express.Router();
  3. var handler = require('../controllers/index')
  4. /* GET home page. */
  5. router.get('/', handler.homePage);
  6. module.exports = router;
  1. 去掉路由中的重复路径

    在routes目录下有个user.js路由,该路由的配置信息可能是
  1. route.use('/user/add', xxxHandler);
  2. route.use('/user/edit', xxxHandler);

通过观察发现,每行都有'/user' 比较麻烦,为了简化配置

我们需要修改路由

  1. 在app.js中添加如下信息
  1. var user = require('./routes/user');
  2. // 挂载用户路由
  3. // 加上前缀,这样的话,user 中的路由就都必须是以 /user开头才行
  4. app.use('/user',user);
  1. 修改routes/user.js
  1. var express = require('express');
  2. var router = express.Router();
  3. route.use('/add', xxxHandler);
  4. route.use('/edit', function(req, res, next) {
  5. res.send('add student');
  6. });
  7. module.exports = router;

10. 测试是否可以正常运行

访问 http://localhost:3000/users/add


升级node项目:代码规范,托管

1. 添加代码规范

项目根目录新建文件.editorconfig,内容如下

  1. # http://editorconfig.org
  2. root = true
  3. # 对所有文件生效
  4. [*]
  5. charset = utf-8
  6. # 缩进类型 可选值,space,tab
  7. indent_style = space
  8. # 缩进数量
  9. indent_size = 2
  10. # 换行符格式
  11. end_of_line = lf
  12. # 是否在最后一行添加换行
  13. insert_final_newline = true
  14. trim_trailing_whitespace = true
  15. # 对后缀名为 md 的文件生效
  16. [*.md]
  17. trim_trailing_whitespace = false

使用github托管

  • 新建.gitignore文件,将不需要托管的文件或文件夹添加进去,下面是我的配置信息

    • node_modules
    • .idea
    • dist
  • git init
  • git add .
  • git commit -m "第一次代码提交"
  • git remote add origin gitUrl
  • git push origin master

添加babel ES6转码器

1.安装ES6转码规则

  1. npm install --save-dev babel-preset-es2015

2.在项目根目录添加.babelrc配置文件,内容如下

  1. {
  2. "presets": [
  3. "es2015"
  4. ],
  5. "plugins": []
  6. }

3.在项目中添加babel-cli工具,用于命令行转码

注意:只能使用npm,别使用npm install 安装包依赖,会报丢失模块错误,如果要使用cnpm安装,请全局安装babel-cli工具(参见阮一峰ES6)

  1. npm install --save-dev babel-cli

4.修改package.json

  1. {
  2. "devDependencies": {
  3. "babel-cli": "^6.0.0"
  4. },
  5. "scripts": {
  6. "build": "babel ./src -d ./dist"
  7. },
  8. }

5.在项目跟目录新建src和dist目录,将bin,controllers,routers文件夹和app.js,config.js文件放入src目录,修改bin/www 添加后缀bin/www.js

6.运行 命令进行转码,测试安装是否顺利

  1. npm run build

7.安装babel-register

  • 安装
  1. npm install --save-dev babel-register

8.在项目根目录新建index.js,内容如下

  1. require('babel-register')
  2. require('./src/bin/www')

9.配置package.json 中的scripts(执行命令)

  • "prebuild","prestart" 可以不配置,如果网非常差,前提node_module安装完美
  1. "prebuild": "npm install"
  2. "build": "babel ./src -d ./dist",
  3. "predev": "npm install",
  4. "dev": "supervisor ./index",
  5. "prestart": "npm run build",
  6. "start": "supervisor ./dist/bin/www"
  • 开发环境

    • npm install 安装依赖包
    • npm run build 编译代码
    • npm run dev 通过babel-register改写require命令
  • 生成环境

    • npm install -production 安装依赖包
    • npm run build 编译代码
    • npm start 直接执行app.js不需要改写babel-register命令

10.修改src/app.js src/config.js

  • 修改config.js代码如下
  1. viewPath: path.join(__dirname, './../views'),
  2. publicPath:path.join(__dirname,'./../public'),
  3. staticPath:path.join(__dirname,'./../static'),
  4. node_modulesPath:path.join(__dirname,'./../node_modules'),
  • 修改app.js中静态资源配置信息为
  1. app.use('/public',express.static(config.publicPath));
  2. app.use('/node_modules',express.static(config.node_modulesPath));
  3. app.use('/static',express.static(config.staticPath));

11.使用ES6语法更新js代码

  • 常用的语法有

    • var http = require('http') –> import http from 'http';//全部导入
    • var path = require('path') –> import { join } from 'path';//导入指定方法
    • var myModel = require('./myModel') –> import * as myModel from './myModel';//导入自定义模块
    • export function methodName(){}//在自定义模块中创建一个方法
    • export default methodName/objName;//使用export default 命令
    • 通过 const 定义常量
    • 通过 let 定义变量
    • 使用模板字符串
    • 通过class 定义类
    • 直接函数名(){..}定义函数,无需通过function关键字

快速构建express项目的更多相关文章

  1. 基于Swagger+SpringBoot快速构建javaweb项目

    章节导航 SpringBoot&Swagger简介 数据模型和接口定义 项目框架生成 业务逻辑实现 项目源码地址 github项目路径:https://github.com/Vikezhu/s ...

  2. vue-cli快速构建Vue项目

    vue-cli是什么? vue-cli 是vue.js的脚手架,用于自动生成vue.js模板工程的. vue-cli怎么使用? 安装vue-cli之前,需要先装好vue 和 webpack npm i ...

  3. vue-cli快速构建vue项目模板

    vue-cli 是vue.js的脚手架,用于自动生成vue.js模板工程的. 1.使用npm安装vue-cli 需要先装好vue 和 webpack(前提是已经安装了nodejs,否则连npm都用不了 ...

  4. 使用nodeJs安装Vue-cli并用它快速构建Vue项目

    部分摘自:http://www.cnblogs.com/wisewrong/p/6255817.html(已在本地测试) 前提:nodeJs本地已安装. 一.安装 vue-cli 1.使用nodeJs ...

  5. 使用dva脚手架(dva-cli)快速构建React项目

    安装 dva-cli 你应该会更希望关注逻辑本身,而不是手动敲入一行行代码来构建初始的项目结构,以及配置开发环境. 那么,首先需要安装的是 dva-cli .dva-cli 是 dva 的命令行工具, ...

  6. 快速构建C++项目工具Scons,结合Editplus搭建开发环境

    Windows下C++开发工具用的最多的非VS莫属了(当然也有很多比如eclipse,Qt等等),便捷的项目构建向导,再加上强大的VC助手,使得开发和调试得心应手.并不是说vc就没有缺点,相反缺点也不 ...

  7. 基于 Vue3.0 Composition Api 快速构建实战项目

    Quick Start 项目源码:https://github.com/Wscats/vue-cli 本项目综合运用了 Vue3.0 的新特性,适合新手学习

  8. Maven 快速构建一个项目

    参考:http://www.spring4all.com/article/266 mvn archetype:generate -DgroupId=springboot -DartifactId=sp ...

  9. SpringCloud核心教程 | 第二篇: 使用Intellij中的maven来快速构建Spring Cloud工程

    spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运行环 ...

随机推荐

  1. ext afteredit

    ext afteredit详解 grid.on("afteredit",afterEidt,grid); function(obj) { obj.row;;//修改过的行从0开始 ...

  2. Jquery select 选中项中自定义的值

    给select 赋值,除了已有的value及text,新建一属性simple_name function GetDicOfficeList(dicType, sid) { $.ajax({ url: ...

  3. Storm实时流处理Hello World

    近来在看Storm的相关资料,以下总结一下配置过程和Hello World例子. Storm是分布式的实时计算系统.详细文档可参考Storm网站,也可以参阅<Getting started wi ...

  4. ArrayAdapter适配器的用法,模拟QQ发消息界面。

    import java.util.ArrayList; import android.app.Activity; import android.content.Context; import andr ...

  5. JS桌面应用

    一.图片预加载 var oImg = new Image(); oImg.onload=function(){ //alert('success'); } oImg.onerror=function( ...

  6. 二模 (12) day1

    第一题: 题目大意: 求由N个1,M个0组成的排列的个数,要求在排列的任意一个前缀中,1的个数不少于0的个数.N,M<=5000. 解题过程: 1.看到N,M的范围就明确肯定不会是dp,因为起码 ...

  7. win10环境下使用苹果虚拟机不要开多线程应用下载文件

    win10环境下使用苹果虚拟机开多线程应用下载文件时候卡死,网络老掉. 8GB内存不够用?2.5mb网速不够用? 开的百度网盘下载个电影 结果虚拟机卡的不行 关了 网盘 挂起虚拟机 然后再 继续运行客 ...

  8. 基于百度定位及天气获取的DEMO

    demo基于百度定位APIv4.0版.新浪天气(不用查询城市代码). 需求: 1.button实现触发定位监听和天气捕获 2.两个textview 分别显示详细地址.天气. 界面很简陋,侧重功能实现. ...

  9. 标签工作区(navtab)

    B-JUI使用标签可以加载其他页面的数据 B-JUI框架的整个工作区部分就是一个navtab组件,本页面位于"#bjui-container"容器内,固定的html结构如下: &l ...

  10. Hadoop中常用的InputFormat、OutputFormat(转)

    Hadoop中的Map Reduce框架依赖InputFormat提供数据,依赖OutputFormat输出数据,每一个Map Reduce程序都离不开它们.Hadoop提供了一系列InputForm ...