快速构建express项目
构建node项目
github地址
https://github.com/haoyongliang/quickly-create-node-project.git
创建最基本的node项目
1.全局安装express
npm install -g express
2.全局安装express-generator
npm install -g express-generator
npm install -g express
npm install -g express-generator
(输入express –help 测试是否安装成功)
3.进入到工程父目录
cd [工程父目录名]
4.快速创建工程结构
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
npm install --save supervisor
修改package.json
"start": "supervisor ./bin/www"
8. 模板引擎和模板的修改
- 安装nunjucks模板引擎
npm install --save nunjucks
- 在项目根目录添加config.js,内容如下
var path = require('path')module.exports = {viewPath: path.join(__dirname, 'views')}
- 替换app.js中的模板引擎,将ejs修改为nunjucks
var nunjucks = require('art-template');// 配置使用 NunJucks 模板引擎nunjucks.configure(config.viewPath, {autoescape: true,express: app,watch: true,noCache: false})
修改模板文件
- 找到文件:views/index.ejs, views/error.ejs
- 将文件后缀ejs修改为html
- 将模板文件里面的<%= xx %>替换成{{ xxx}}
修改涉及到模板渲染的js:app.js,router/index.js
- 将其中的render("xxx")加后缀修改成render("xxx.html")
9. 修改路由
- 在项目根目录(app.js所在目录)添加controllers目录,并在目录下添加index.js,用于存放路由的具体业务逻辑
module.exports.homePage = (req, res, next) => {res.render('index.html',{title:'Express'});}
- 修改routes/indexs.js路由,引用controllers/index.js
var express = require('express');var router = express.Router();var handler = require('../controllers/index')/* GET home page. */router.get('/', handler.homePage);module.exports = router;
- 去掉路由中的重复路径
在routes目录下有个user.js路由,该路由的配置信息可能是
route.use('/user/add', xxxHandler);route.use('/user/edit', xxxHandler);
通过观察发现,每行都有'/user' 比较麻烦,为了简化配置
我们需要修改路由
- 在app.js中添加如下信息
var user = require('./routes/user');// 挂载用户路由// 加上前缀,这样的话,user 中的路由就都必须是以 /user开头才行app.use('/user',user);
- 修改routes/user.js
var express = require('express');var router = express.Router();route.use('/add', xxxHandler);route.use('/edit', function(req, res, next) {res.send('add student');});module.exports = router;
10. 测试是否可以正常运行
访问 http://localhost:3000/users/add
升级node项目:代码规范,托管
1. 添加代码规范
项目根目录新建文件.editorconfig,内容如下
# http://editorconfig.orgroot = true# 对所有文件生效[*]charset = utf-8# 缩进类型 可选值,space,tabindent_style = space# 缩进数量indent_size = 2# 换行符格式end_of_line = lf# 是否在最后一行添加换行insert_final_newline = truetrim_trailing_whitespace = true# 对后缀名为 md 的文件生效[*.md]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转码规则
npm install --save-dev babel-preset-es2015
2.在项目根目录添加.babelrc配置文件,内容如下
{"presets": ["es2015"],"plugins": []}
3.在项目中添加babel-cli工具,用于命令行转码
注意:只能使用npm,别使用npm install 安装包依赖,会报丢失模块错误,如果要使用cnpm安装,请全局安装babel-cli工具(参见阮一峰ES6)
npm install --save-dev babel-cli
4.修改package.json
{"devDependencies": {"babel-cli": "^6.0.0"},"scripts": {"build": "babel ./src -d ./dist"},}
5.在项目跟目录新建src和dist目录,将bin,controllers,routers文件夹和app.js,config.js文件放入src目录,修改bin/www 添加后缀bin/www.js
6.运行 命令进行转码,测试安装是否顺利
npm run build
7.安装babel-register
- 安装
npm install --save-dev babel-register
8.在项目根目录新建index.js,内容如下
require('babel-register')require('./src/bin/www')
9.配置package.json 中的scripts(执行命令)
- "prebuild","prestart" 可以不配置,如果网非常差,前提node_module安装完美
"prebuild": "npm install""build": "babel ./src -d ./dist","predev": "npm install","dev": "supervisor ./index","prestart": "npm run build","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代码如下
viewPath: path.join(__dirname, './../views'),publicPath:path.join(__dirname,'./../public'),staticPath:path.join(__dirname,'./../static'),node_modulesPath:path.join(__dirname,'./../node_modules'),
- 修改app.js中静态资源配置信息为
app.use('/public',express.static(config.publicPath));app.use('/node_modules',express.static(config.node_modulesPath));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项目的更多相关文章
- 基于Swagger+SpringBoot快速构建javaweb项目
章节导航 SpringBoot&Swagger简介 数据模型和接口定义 项目框架生成 业务逻辑实现 项目源码地址 github项目路径:https://github.com/Vikezhu/s ...
- vue-cli快速构建Vue项目
vue-cli是什么? vue-cli 是vue.js的脚手架,用于自动生成vue.js模板工程的. vue-cli怎么使用? 安装vue-cli之前,需要先装好vue 和 webpack npm i ...
- vue-cli快速构建vue项目模板
vue-cli 是vue.js的脚手架,用于自动生成vue.js模板工程的. 1.使用npm安装vue-cli 需要先装好vue 和 webpack(前提是已经安装了nodejs,否则连npm都用不了 ...
- 使用nodeJs安装Vue-cli并用它快速构建Vue项目
部分摘自:http://www.cnblogs.com/wisewrong/p/6255817.html(已在本地测试) 前提:nodeJs本地已安装. 一.安装 vue-cli 1.使用nodeJs ...
- 使用dva脚手架(dva-cli)快速构建React项目
安装 dva-cli 你应该会更希望关注逻辑本身,而不是手动敲入一行行代码来构建初始的项目结构,以及配置开发环境. 那么,首先需要安装的是 dva-cli .dva-cli 是 dva 的命令行工具, ...
- 快速构建C++项目工具Scons,结合Editplus搭建开发环境
Windows下C++开发工具用的最多的非VS莫属了(当然也有很多比如eclipse,Qt等等),便捷的项目构建向导,再加上强大的VC助手,使得开发和调试得心应手.并不是说vc就没有缺点,相反缺点也不 ...
- 基于 Vue3.0 Composition Api 快速构建实战项目
Quick Start 项目源码:https://github.com/Wscats/vue-cli 本项目综合运用了 Vue3.0 的新特性,适合新手学习
- Maven 快速构建一个项目
参考:http://www.spring4all.com/article/266 mvn archetype:generate -DgroupId=springboot -DartifactId=sp ...
- SpringCloud核心教程 | 第二篇: 使用Intellij中的maven来快速构建Spring Cloud工程
spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运行环 ...
随机推荐
- 一些Shell命令
lsof -nP -itcp:8080 查看本机8080端口在被什么应用占用,可以查看此应用对应的pid. netstat -ant|grep 8081 查看本机8081端口的使用情况. telnet ...
- 如何解决linQ“序列不包含任何元素”的问题?
描述:该问题出现在校对BT种子数据的时候遇到的bug,原因是使用linq查找元素的时候 B是A的一个子集, B在A中一定存在,这种情况下就不会抛出异常情况,反之B的一部分不属于A就会异常应为B中的一个 ...
- Nginx 在windows下配合iis搭建负载均衡过程 [转]
因为项目遇到大量图片存储问题,虽然现在我们图片还不是很多(目前在1T上下,预计增长速度每年1.3倍的增长速度),自己在思考如何有效地存储大量图片时,查找一些资料,看到了,有人使用 Nginx搭建服务器 ...
- getWritableDatabase()与getReadableDatabase()方法
一旦在程序中得到了SQLiteOpenHelper对象之后,程序无须使用SQLiteDatabase的静态方法创建SQLiteDatabase实例,而且可以使用getWritableDatabase( ...
- 互斥锁pthread_mutex_t的使用(转载)
1. 互斥锁创建 有两种方法创建互斥锁,静态方式和动态方式.POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER来静态初始化互斥锁,方法如下: pthread_mut ...
- appjs desktop2
var express = require('express');var path = require('path');var favicon = require('serve-favicon');v ...
- 获取css style值
var obj=document.getElementById("btn");var currentStyle=null;if(obj.currentStyle){ current ...
- 【个人使用.Net类库】(2)Log日志记录类
开发接口程序时,要保证程序稳定运行就要时刻监控接口程序发送和接收的数据,这就需要一个日志记录的类将需要的信息记录在日志文件中,便于自己维护接口程序.(Web系统也是如此,只是对应的日志实现比这个要复杂 ...
- BYOA,也许是IT大叔眼中的新生代萝莉
BYOx已经成为一种潮流,仿佛美瞳.紧身legging和大红唇在某个阶段也是姑娘们的标配,这个小小的x可以替换成任何东西,带着你的“玫瑰”.带着你的“嫁妆”.带着你的“炸鸡和啤酒”……很抱歉,今天的故 ...
- 由于lightdm.conf 错误无法进入ubuntu 的办法
由于自己向默认登录GNOME桌面,所以修改了lightdm,由于参数错误,结果无法启动桌面? 这是需要进入shell界面: 1.选择cancel ,如果虚拟机下无法点击cancel按钮,可以使用快捷键 ...