express+webpackを使って小さいプロジェクトを作ります.
本プロジェクトは小さいウェブサイトを実現したいです.css方面:ress.cssを持っています.sass文法が使えます.js方面:エス6文法が使えます.テンプレートの面:継承可能なテンプレートがあり、共通部分は共通のテンプレートを抽出することができます.プロジェクトの熱起動:
実現の考え方: expressを使ってプロジェクトを構築する. テンプレートはjadeテンプレートを使用し、テンプレートは継承可能であり、共通のheader、footer部分を導入することができる. 導入webpack s 6環境を構築する nodemonを導入して熱起動を実現します.
本文はここから始まります.
express構築プロジェクト
express-generatorを使って、快速にexpressプロジェクトを作成できます.まず、express-generatorをインストールします.
ejsテンプレートを使いたいなら、パラメータを加えてもいいです.
起動命令:
テンプレートの継承
ページが共用の頭と尾を使いたいなら、jadeでいくつかのデザインをすることができます.私たちはviewの下でshareフォルダを作成して、共通のjadeテンプレートを保存します.indexフォルダにはトップページで使用するjadeテンプレートが格納されます.
layout.jade
トップページのテンプレートはlayout.jade:index.jadeを継承できます.
webpack
webpack.co.nfig.jsを確立する:
loadersでは、extract-text-webpack-pluginというプラグインを使用します.先に実行するという意味です.逆のパイプに似ています.css-loadersは@import url()をrequirestyle-loadersに翻訳してstyleラベルを注入します.
熱起動
OKです.あとはこの駅の上でページを作ることができます.webpackはここで発光して発熱することもできます.
Reference
http://webpackdoc.com/configu...
実現の考え方:
本文はここから始まります.
express構築プロジェクト
express-generatorを使って、快速にexpressプロジェクトを作成できます.まず、express-generatorをインストールします.
npm install express-generator -g
expressを使ってプロジェクトを作成します.express little-project
作成したプロジェクトテンプレートエンジンは、デフォルトではjadeテンプレートを使用します.ejsテンプレートを使いたいなら、パラメータを加えてもいいです.
express -e little-project
次のディレクトリ構造を生成することが見られます.起動命令:
node ./bin/www
はwelcome to expressのページを見ることができます.テンプレートの継承
ページが共用の頭と尾を使いたいなら、jadeでいくつかのデザインをすることができます.私たちはviewの下でshareフォルダを作成して、共通のjadeテンプレートを保存します.indexフォルダにはトップページで使用するjadeテンプレートが格納されます.
layout.jade
doctype html
html
head
meta(charset="UTF-8")
meta(http-equiv="X-UA-Compatible",content="IE=Edge")
title=title
meta(name='keywords',content='')
meta(name='description',content='')
//- link(rel='stylesheet', href='/common.css')
link(rel='stylesheet', href='/#{staticTag}.css')
body
#little-project
.little-project-wrap
include header
block content
include footer
//- script(src='/common.js')
script(src='/#{staticTag}.js')
include footerにより、header部分がテンプレート共通を実現します.トップページのテンプレートはlayout.jade:index.jadeを継承できます.
extends ../share/layout
block content
h1= title
p Welcome to #{title}
ルート部分はstaticTagの値を指定します.router.get('/', function(req, res, next) {
res.render('index/index', { title: 'E', staticTag: 'index'});
});
これにより、各ページで自動的にstaticTag変数を使うjsを実現することができます.webpack
webpack.co.nfig.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()をrequirestyle-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
ES 6環境の設定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
静的ファイルディレクトリをap.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...