本项目想实现一个小网站,
css方面:带reset.css,能使用sass语法;
js方面:能使用es6语法;
模板方面:有可继承的模板,公用部分可提取公用的模板;
项目实现热启动:

实现思路:

  • 使用express搭建项目;

  • 模板使用jade模板,模板可继承,并能引入公用的header,footer部分;

  • 引入webpack

  • 搭建es6环境

  • 引入nodemon 实现热启动

正文从这里开始~

express搭建项目

使用express-generator可以快速创建express项目
首先,安装express-generator:

npm install express-generator -g 

使用express创建项目:

express little-project

生成的项目模板引擎默认使用jade模板。

如果想使用ejs模板,可以加上参数-e:

express -e little-project

可以看到生成如下的目录结构:

启动命令:node ./bin/www
即可看到 welcome to express 的页面了。

模板继承

页面如果想使用公用的头部和尾部,可以在jade这里做些设计:
我们在views下建立share文件夹,用于存放公用的jade模板。index文件夹存放首页用到的jade模板。

layout.jade

doctype html
htmlheadmeta(charset="UTF-8")meta(http-equiv="X-UA-Compatible",content="IE=Edge")title=titlemeta(name='keywords',content='')meta(name='description',content='')//- link(rel='stylesheet', href='/common.css')link(rel='stylesheet', href='/#{staticTag}.css')body#little-project.little-project-wrapinclude headerblock contentinclude footer//- script(src='/common.js')script(src='/#{staticTag}.js')

通过include footer, header 部分实现模板公用。

首页模板可以继承layout.jade:
index.jade:

extends ../share/layoutblock contenth1= titlep Welcome to #{title}

路由部分去指定staticTag的值:

router.get('/', function(req, res, next) {res.render('index/index', { title: 'E', staticTag: 'index'});
});

这样,就可以实现每个页面自动使用staticTag变量的js

webpack

建立webpack.config.js:
touch webpack.config.js:

var webpack = require('webpack');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var path = require('path');
//路径是相对于package.json所在路径
var entry_map = {'index': './public/index/index.js',
}
module.exports = {entry: entry_map,devtool: 'source-map',output: {path: path.resolve(process.cwd(),'dist/'),//[name]-[hash].js可以指定hash值。filename: '[name].js',},plugins: [new ExtractTextPlugin("[name].css")],module: {loaders: [{test: /\.js[x]?$/,exclude: /(node_modules)|(global\/lib\/)/,loader: 'babel-loader'},{test: /\.css$/,loader: ExtractTextPlugin.extract('style-loader','css-loader')},{test: /\.scss$/,//!代表先执行 ?是传递给loader的参数,?sourceMap表示使用sourceMap, js使用sourcemap通过devtool: sourcemap来指定。loader: ExtractTextPlugin.extract('style-loader','css-loader?sourceMap&-convertValues!sass-loader?sourceMap')}]}
}

首先,想单独为页面引入css, 需要引入extract-text-webpack-plugin插件。

loaders中使用extract-text-webpack-plugin这个插件, !是先执行的意思,有点像反过来的管道。
css-loaders 将@import url()翻译为require
style-loaders注入style标签

npm install extract-text-webpack-plugin --save-dev
npm install css-loader --save-dev
npm install style-loader --save-dev
npm install sass-loader --save-dev
//安装sass-loader先安装node-sass
npm install node-sass --save-dev
npm install babel-loader --save-dev

配置ES6环境

touch .babelrc

   presets:['es2015','react','stage-0','stage-3'],plugins:[]
}
npm install babel-cli --save-dev
npm install babel-core --save-dev
npm install babel-preset-es2015 --save-dev
npm install babel-preset-react --save-dev
npm install babel-preset-stage-0 --save-dev

在app.js中指定静态文件目录:

app.use(express.static(path.join(__dirname, 'dist')));

这样当页面请求index.js时,会去dist目录寻找index.js

热启动

npm install nodemon -g

nodemon ./bin/www即可实现热启动

OK了,后续就可以在这个站的基础上做页面了。webpack也可以在此发光发热了。

Reference

http://webpackdoc.com/configu...

使用express+webpack搭建一个小项目相关推荐

  1. 使用express脚手架搭建一个后台项目(下)

    今天把功能部分说完,七夕还在写技术博客也是没谁了 项目整体的目录 实现所有效果的代码 前端 <!DOCTYPE html> <html> <head>        ...

  2. 跟我一起用node-express搭建一个小项目(node连接mongodb)[三]

    数据库虽然安装并启动成功了,但我们需要连接数据库后才能使用数据库. 怎么才能在 Node.js 中使用 MongoDB 呢? 我们使用官方提供的 node-mongodb-native 驱动模块,打开 ...

  3. 从零开始搭建一个react项目

    Nav logo 120 发现 关注 消息 4 搜索 从零开始搭建一个react项目 96 瘦人假噜噜 2017.04.23 23:29* 字数 6330 阅读 32892评论 31喜欢 36 项目地 ...

  4. Webpack 搭建基础 react 项目环境

    现在比较火的前端框架 react 和 vue,大部分时候我们都是通过脚手架进行 搭建的,对于脚手架来说有一个很重要的打包模块 webpack,使用起来确实挺方便的.对于使用脚手架来搭建项目也有弊端,如 ...

  5. 小程序教程1:初识小程序,快速搭建一个小程序项目

    前言: 打算整理一个小程序系列的资料.如何快速搭建一个小程序项目,以及一个小程序项目应该有哪些内容. 相关资料: 微信公众平台微信公众平台,给个人.企业和组织提供业务服务与用户管理能力的全新服务平台. ...

  6. 从零开始搭建一个vue项目 -- vue-cli/cooking-cli(一)

    从零开始搭建一个vue项目 -- vue-cli/cooking-cli(一) 1.vue-cli搭建一个可靠成熟的项目 1.介绍 vue-cli 我是去年六月份接触的vue1.0,当时还是个菜逼,当 ...

  7. vue.js使用vue-cli搭建一个SPA项目

    WHY 之所以写这篇如何运用脚手架自动化构建出一个项目的大架构,主要是面向想入门vue的小伙伴.之前,我第一次接触vue,一直摸不着头脑,想在网上搜个接地气的教程都找不到.SO,我以如何搭建结构为开始 ...

  8. MacOS 搭建一个vue项目(完整步骤)

    搭建一个Vue项目 一.安装node环境 二.搭建vue项目环境 1.全局安装vue-cli 2.检查是否安装成功 3.创建一个基于 webpack 模板的新项目 4.安装依赖 5.启动项目 三.vu ...

  9. vps建网站python_如何使用python搭建一个小网站 ?

    作为一名程序员,还是必须要会开发网站的,不然别人都会怀疑你是不是程序员了.今天,主要介绍一下如何使用python来搭建一个网站.可能有人会觉得搭建网站不都应该用java么?python的性能那么低.的 ...

最新文章

  1. 爱德华·斯诺登:区块链只是新型数据库,比特币终会消失
  2. POJ2536 二分图匹配
  3. SVG基本形状及样式设置
  4. 使用WebUploader实现文件批量上传,进度条显示功能
  5. git推送指令配置_git 常用命令
  6. ux和ui_使用UX设计师为Amazon的Alexa学习会话式UI的基础
  7. Unity项目中的资源管理
  8. 【OpenCV学习笔记】【函数学习】五(颜色空间转换cvCvtColor()函数)
  9. BZOJ3171:[TJOI2013]循环格
  10. win10计算机管理看不见蓝牙,解决win10蓝牙开关不见了的方法
  11. 金蝶k3服务器的操作系统,金蝶k3服务器配置工具
  12. 使用JS代码将steam喜加一的免费游戏删除。
  13. 如何快速比对表格数据
  14. Cocos2d-x制作跨平台太空射击游戏
  15. CCF201609-3 炉石传说 (100分)
  16. java文字版格斗游戏。
  17. 双硬盘装linux系统,在我的双硬盘windows电脑上安装ubuntu18.04
  18. php保存微信头像,保存访问者微信头像至服务器
  19. 五招教你做好企业年终绩效考核,太实用了!
  20. P2320 [HNOI2006] 鬼谷子的钱袋

热门文章

  1. 虚拟服务器 双机热备,云服务器 双机热备
  2. 求助:java applet无法运行,错误: 找不到或无法加载主类 sun.applet.AppletViewer
  3. 最全的浏览器User-Agent
  4. 尤雨溪和Vue的那些事
  5. FPGA学习日志——三八译码器Decoder
  6. 一代信仰落幕,凯迪拉克CTS-V已经停产
  7. 2019INFOCOM 边缘计算资源分配,任务调度,服务部署相关工作不完全总结
  8. Oracle入门笔记(三)——Oracle数据类型
  9. [译]csc_matrix
  10. androd 屏幕分辨率对照表