新建项目 git init manager
css
新建view文件夹,建几个静态文件夹html
新建app.jsnode
快速初始化项目依赖 npm init -y
jquery
安装express npm install --save express
git
运行 app.jses6
const express = require('express'); const app = express(); app.get('/', (req, res)=>{ res.end('hello, itLike'); }); app.listen(3000, ()=>{ console.log('server is running'); });
node app.js
做用: 开发阶段写的时候用ES6,因为 node可能对一些ES6的语法支持不是太彻底,因此在babel的帮助下,运行的时候系统会将ES6 的代码 转换为 ES5 ,这样就能够保证全部的语法都能正常运行了shell
https://babel.docschina.org/express
.babelrc 中输入npm
{ "presets": [ "env" ] }
执行:npm install babel-preset-env --save-dev /* 为何要用--save-dev:生产环境中不须要,上线部署的时候执行 npm install --production */
babel-register能够理解成一个小插件,将es6的东西转成es5.json
执行 npm i babel-register --save-dev
即经过运行 main.js ,间接的运行 app.js
require('babel-register'); require('./app');
// const express = require('express'); import express from 'express'
node main.js
若是main.js 里面,没有 require('babel-register') 这句,运行就会报错 SyntaxError: Unexpected identifier........
因此,能够看出babel-register的做用
如此一来,暴露在外面的就是咱们的main.js文件了,main.js 文件就是项目的入口文件
用 babel 命令把 app.js es6 的内容转换为 es5
$ babel ./app.js bash: babel: command not found
说明须要安装一下 cli
全局安装: npm install -g babel-cli 或 局部安装: npm install babel-cli --save-dev
使用babel命令,若是在命令行工具中无效,就使用全局安装,
命令行窗口执行结果:
$ babel ./app.js 'use strict'; var _express = require('express'); var _express2 = _interopRequireDefault(_express); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de fault: obj }; } var app = (0, _express2.default)(); // const express = require('express'); app.get('/', function (req, res) { res.end('hello, express'); }); app.listen(3000, function () { console.log('server is running'); });
接下来进入主线步骤:
babel src -d dist
命令的做用是将 src 下的全部文件 用babel 转成 es5的文件,并放到 dist文件夹下
结果:src\app.js -> dist\app.js ,目前的目录结构为:
开发和生产分离:
开发环境: npm run dev
生产环境:npm run build
、 npm start
npm i --save bootstrap@3.3.7 font-awesome nprogress jquery echarts
font-awesome:一套绝佳的图标字体库和CSS框架 http://fontawesome.dashgame.com/
nprogress: 轻量级的进度条组件,另外还有一款叫 nanobar
NProgress.js:http://ricostacruz.com/nprogress/
nanobar.js:http://nanobar.micronube.com/
echarts: 百度那个可视化图表库
新建config.js
import {join} from 'path' export default { viewPath: join(__dirname, '../views') }
app.js 中:
import config from './config' import express from 'express' const app = express(); // 1. 设置模板引擎view engine setup app.set('views', config.viewPath); app.set('view engine', 'ejs'); // 2. 配置静态的资源 app.use(express.static(config.public_path)); app.get('/', (req, res,next)=>{ res.render('index'); }); app.listen(3000, ()=>{ console.log('server is running'); });
安装ejs模板: npm install ejs --save
启动: npm run dev
访问 http://localhost:3000/ ,就能够访问到咱们的页面了
app.js
...... // 2. 配置静态的资源 app.use(express.static(config.public_path)); app.use('/node_modules', express.static(config.node_modules_path)); ......
config.js
import {join} from 'path' export default { viewPath:join(__dirname,'../views'), public_path:join(__dirname,'../public'), node_modules_path:join(__dirname,'../node_modules') }
import {join} from 'path' 意思就是取 path 里的方法,也能够 import path from 'path' ,下面拼接的时候用 path.join() 便可。
app.js
app.use('/public', express.static(config.public_path));
在index.ejs中, 引入 modules里的文件以下,其余静态文件直接引入便可
<link rel="stylesheet" href="css/index.css"> <link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.css"> <link rel="stylesheet" href="node_modules/font-awesome/css/font-awesome.css">
nodemon用来监视node.js应用程序中的任何更改并自动重启服务 ,这样开发中就不用频繁手动重启服务了。
nodemon 可参考博客:http://www.cnblogs.com/JuFoFu/p/5140302.html?utm_source=tuicool&utm_medium=referral
npm install -g nodemon
启动:
nodemon [your node app](至关于 node [your node app])
在这里咱们根据实际状况,更改 package.json 中的内容
"dev": "node main.js" 改成: "dev": "nodemon main.js"
以上使用的模板引擎是 ejs ,下面用 Nunjucks,JavaScript 专用的功能丰富、强大的模板引擎。
https://nunjucks.bootcss.com/
删除ejs配置nunjucks, npm uninstall --save ejs
安装nunjucks npm install nunjucks --save
而后:app.js
import nunjucks from 'nunjucks'; nunjucks.configure(config.viewPath, { autoescape: true, express: app, // noCacht 不要缓存,避免开发过程当中形成的数据不许确 noCache: true }); app.get('/', (req, res, next)=>{ // 用 nunjucks ,这里要加上文件后缀了 res.render('index.html'); });
- nunjucks模板引擎没有对模板文件名的后缀作特定限制,若是文件名是index.html, 则渲染是就须要传递 index.html
- 处处 可运行,不管是 node 仍是任何浏览器都支持,而且还能够预编译模板。
运行 npm run dev
,访问 ok.