エスシックス
1. プロジェクトビルド
gitコマンドでプロジェクトファイルを作成:es6にはapp、server、taskが含まれ、appファイルにはプロジェクトのjs、css、viewファイルが含まれ、tasksフォルダにはutilフォルダ、package.json(npm initで作成)などが含まれます。
app="entry file index.jsとclass folder="test.jsにあるjs。
views=" エラーテンプレートファイルerror.ejsのエントリファイル、その他index.ejsの基本的な処理を行う。
(ファイル初期化コマンド:touch)
serverの下に作成されたフォルダには、事前にexpress scaffoldingをインストールする必要があります。これはnodeに依存するので、nodeのウェブサイトにアクセスしてインストールパッケージを事前にダウンロードしてください。
インストールコマンド:express -e .
注:expressを報告する際に問題が発生しました:コマンドが見つかりません、解決策の参照。 http://blog.csdn.net/dai_jing/article/details/38087443
npm install を実行して、サーバーコードを自動的にインストールします。
ビルドディレクトリ tasts (ファイルのマージ、ディレクトリの更新などを処理) = "util (共通スクリプトを格納) = "args.js
npm initでpackage.jsonを作成します。
touch .babelrc (babelが設定を読み込むためにコンパイルします)
touch gulpfile.babel.js (es6を使用しているのでbabelを追加)
2.args.js
import yargs from 'yargs';
// Create command line arguments
const args = yargs
.option('production',{
boolean:true,
default:false,
description:'Select the online environment, not the default development environment -production'
})
.option('watch',{
boolean:true,
default:false,
description:'Listen for changes to the file and whether it needs to be automatically compiled'
})
.option('verbose',{
boolean:true,
default:false,
description:'log'
})
.option('sourcemaps',{
description:'Force the generation of sourcemaps'
})
.option('port',{
string:true,
default:8000,
description:'Set the server access port'
})
.argv // set the command to be parsed in character creation
3. ビルドディレクトリの下にscript.jsを作成(touch) タスク
必要なパッケージをファイルに導入し、コマンドラインでインストール npm install yargs gulp gulp-if gulp-concat webpack webpack-stream vinyl-named gulp-livereload gulp-plumber gulp-rename gulp -uglify gulp-util --save-dev (遅い、失敗、問題のあるインストール、npm mirrorで解決可能 例:タオバオミラー.)
エラー報告に注意(
npm WARN deprecated [email protected]: RegExp DoS 問題を回避するため、minimatch 3.0.2 以降にアップデートしてください。
npm WARN deprecated [email protected]: RegExp DoS 問題を回避するため、minimatch 3.0.2 以降に更新してください。
npm WARN deprecated [email protected]: graceful-fs v3.0.0 以前のバージョンは、ノードリリース >= v7.0 では失敗します。このため、できるだけ早くgraceful-fs@^4.0.0に更新してください。また、'npm ls graceful-fs'を使用して、ツリーの中でそれを見つけることができます。
): すでに4.6.1になっており、対応できていない。解決策参考。 https://segmentfault.com/q/1010000005749798
import gulp from 'gulp';
import gulpif from 'gulp-if'; //handle if judgments
import concat from 'gulp-concat'; //handle character creation concatenation
import webpack from 'webpack';
import gulpWebpack from 'webpack-stream';
import named from 'vinyl-named'; //file naming
import livereload from 'gulp-livereload'; //hotload
import plumber from 'gulp-plumber'; //processing file streams
import rename from 'gulp-rename'; //handle file renaming
import uglify from 'gulp-uglify'; //process file compression
import {log,colors} from 'gulp-util';// package output in command line tools
import args from '. /util/args'; // package for parsing command-line arguments that you edit yourself
gulp.task('scripts',() => {
return gulp.src(['app/js/index.js'])
.pipe(plumber({
errorHandler:function () {
}
}))
.pipe(named())
// Compilation of js
.pipe(gulpWebpack({
module:{
loaders:[{
test:/\.js$/,
loader:'babel'
}]
}
},null,(err,stats) => {
log(`Finished '$(colors.cyan('scripts'))'`,stats.toString({
chunks:false
}))
}))
// write the compiled file to the specified path
.pipe(gulp.dest('server/public/js'))
//backup the file
.pipe(rename({
basename:'cp',
extname:'.min.js'
}))
//compile the compressed file
.pipe(uglify({compress:{properties:false},output:{'quote_keys':true}}))
.pipe(gulp.dest('server/public/js'))
//monitor the listener and reload
.pipe(gulpif(args.watch,livereload()))
})
3. テンプレート処理用のpages.jsをtasksフォルダに作成する
import gulp from 'gulp';
import gulpif from 'gulp-if';
import livereload from 'gulp-livereload';
import args from '. /util/args';
//processing templates
gulp.task('pages',() => {
return gulp.src('app/**/*.ejs')
.pipe(gulp.dest('server'))
.pipe(gulpif(args.watch,livereload()))
})
4. テンプレートを処理する css.js を tasks フォルダに作成します。
import gulp from 'gulp';
import gulpif from 'gulp-if';
import livereload from 'gulp-livereload';
import args from '. /util/args';
//processing templates
gulp.task('css',() => {
return gulp.src('app/**/*.css')
.pipe(gulp.dest('server/public'))
.pipe(gulpif(args.watch,livereload()))
})
5. 5.サーバースクリプトserver.jsをtasksフォルダに作成します。
import gulp from 'gulp';
import gulpif from 'gulp-if';
import liveserver from 'gulp-live-server'; // package to start the server
import args from '. /util/args';
gulp.task('serve',(cb) => {
if(!args.watch) return cb();
var server = liveserver.new(['--harmony','server/bin/www']);
server.start();
gulp.watch(['server/public/**/*.js','server/views/**/*.ejs'],function () {
server.notify.apply(server,[file]);
})
// When the route. Changes need to be restarted to listen to the server
gulp.watch(['server/routes/**/*.js','server/app.js'], function () {
server.start.bind(server)();
})
})
6. tasks フォルダに browser.js というスクリプトを作成します。
import gulp from 'gulp';
import gulpif from 'gulp-if';
import gutil from 'gulp-util'; //gulp function collection common tools
import args from '. /util/args';
gulp.task('browser',(cb) =>{
if(!args.watch) return cb();
gulp.watch('app/**/*.js',['scripts']);
gulp.watch('app/**/*.ejs',['pages']);
gulp.watch('app/**/*.css',['css']);
});
// When the file is created and needs to be recompiled into the server, the new file will be overwritten, so the specified file should be cleared, so create clean.js
7. 新しい依存関係をダウンロードする
npm install del gulp-util gulp-live-server --save-dev
8...tasks フォルダにクリーンファイル clean.js を作成します。
import gulp from 'gulp';
import del from 'del'; //introduce the deleted package
import args from '. /util/args';
gulp.task('clean',() => {
return del(['server/public','server/views'])
})
9...tasks フォルダに、タスクの順番を定義する build.js を作成します。
import gulp from 'gulp';
import gulpSequence from 'gulp-sequence'; //define the sequential order of packages
gulp.task('build',gulpSequence('clean','css','pages','scripts', ['browser','serve']));
パッケージのインストール npm install gulp-sequence --save-dev
10...tasks フォルダに default.js を作成します。
import gulp from 'gulp';
gulp.task('default',['build']);
11. gulpの実行
エラー報告に注意してください。
dingqi@LAPTOP-SV6SV5RV MINGW64 ~/Desktop/es6
$ gulp
[23:13:45] 外部モジュール babel-register のロードに失敗しました。
[23:13:45] 外部モジュール babel-core/register のロードに失敗しました。
[23:13:45] 外部モジュール babel/register のロードに失敗しました。
[23:13:45] Using gulpfile ~Desktopes6 ╱gulpfile.babel.js
[23:13:46] タスク 'default' が gulpfile に含まれていません。
[23:13:46] 正しいgulpfileの書式をドキュメントで確認してください。
解決策
npm install babel-loader babel-core babel-preset-env --save-dev
gulpfile.babel.js が編集されました。
import requireDir from 'require-dir'; //introduce the package of files
requireDir('. /tasks'); //introduce so files
パッケージのインストール npm install require-dir --save-dev
bablerc さんが編集しました。
{
"presets": ["es2015"]
}
パッケージのインストール npm install babel-preset-es2015 --save-dev
gulpの実行が成功することがある
12. gulp --watch を実行する // ファイルを一回実行するだけでなく、リッスンするために watch を追加する
13. ブラウザでlocalhost: 3000を開きます。
app="views="index.ejsを編集してください。
! ページテンプレートを素早く作成するための+tabリターン
とりあえず手動でリフレッシュ
14. サーバーの下のエントリ app.js ファイルに以下を追加します。
app.use(require('connect-livereload')()); //add auto-refresh
Location.
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(require('connet-livereload')());
app.use('/', index);
app.use('/users', users);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
サービスを終了する Ctrl+c
パッケージのインストール npm install connect-livereload --save-dev
15. テスト
gulp --watch // 実行
16. 関数を書く
app="js="index.js に移動します。
エディター
class Test{
constructor(){
this.a = 'hello world';
}
}
let test = new Test();
document.body.innerHTML = test.a;
app="views="index.ejs のページで紹介されています。
<script src=". /js/index.js"></script>
17. ブラウザが更新されたので開く
// ビルドツールのセクションが完成しました
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ハートビート・エフェクトのためのHTML+CSS
-
HTML ホテル フォームによるフィルタリング
-
HTML+cssのボックスモデル例(円、半円など)「border-radius」使いやすい
-
HTMLテーブルのテーブル分割とマージ(colspan, rowspan)
-
ランダム・ネームドロッパーを実装するためのhtmlサンプルコード
-
Html階層型ボックスシャドウ効果サンプルコード
-
QQの一時的なダイアログボックスをポップアップし、友人を追加せずにオンラインで話す効果を達成する方法
-
sublime / vscodeショートカットHTMLコード生成の実装
-
HTMLページを縮小した後にスクロールバーを表示するサンプルコード
-
html のリストボックス、テキストフィールド、ファイルフィールドのコード例