Nodejs:简单的脚手架(一)

html-webpack-plugin:  用来生成html文件的插件 

glob:  用来筛选文件,文件目录

path:  管理文件路径



次脚手架里主要用到的是这3个插件,后续会根据所用插件逐渐完善脚手架:

  entry部分:定义一个glob对象,在pages目录下面搜寻页面路径(index/index;login/index),路径按照此规范写,方便后面组织管理,一个小模块为一个页面,具体glob对象的使用方法前面有介绍。

  plugins部分:引入了jquery,同时提取了公共样式。每个模板返回的ejs都在HtmlWebpackPlugin里生成了html文件并输出,这里用到了箭头函数,es6的,注意js文件需要用bable处理一下。

  loaders:都是一些常用通用的,我个人的理解为对不同后缀的文件进行不同的处理,大同小异。

  alias:自己定义require的路径,当一些组件引用频繁的时候,可以放在这里面便于处理。

文件目录如下:

--src
    |--pages
    |       |--index
    |       |       |--index
    |       |           |--page.ejs
    |       |           |--html.js
    |       |           |--page.js
    |       |           |--page.less
    |       |--lgoin
    |                |--..同上
    |-public....

  

脚手架代码如下:

var webpack = require(‘webpack‘);
var glob = require(‘glob‘);
var path = require(‘path‘);

var precss = require(‘precss‘);
var autoprefixer = require(‘autoprefixer‘);

var ExtractTextPlugin = require(‘extract-text-webpack-plugin‘);
var HtmlWebpackPlugin = require(‘html-webpack-plugin‘);

var publicDir = path.resolve(__dirname, ‘./src‘)
var pagesDir = path.resolve(__dirname, ‘./src/pages‘)
var staticDir = path.resolve(__dirname, ‘./src/static‘)
var buildDir = path.resolve(__dirname, ‘./build‘)

/*
 * entry
 */
var pageEntry = {};
var globInstance = new glob.Glob(‘!(_)*/!(_)*‘, {
    cwd: pagesDir,
    sync: true,
});
var pageArr = globInstance.found;
pageArr.forEach((page) => {
    pageEntry[page] = path.resolve(pagesDir, page + ‘/page‘);
});

/*
 * plugins
 */
var configPlugins = [
    new webpack.ProvidePlugin({
        $: ‘jquery‘,
        jQuery: ‘jquery‘,
        ‘window.jQuery‘: ‘jquery‘,
        ‘window.$‘: ‘jquery‘,
    }),
    new webpack.optimize.CommonsChunkPlugin({
        name: ‘commons/commons‘,
        minChunks: 2,
    }),
    new ExtractTextPlugin("[name]/styles.css")
];

/*
 * plugins - for ejs page
 * page --> login/index
 */
pageArr.forEach((page) => {
    const htmlPlugin = new HtmlWebpackPlugin({
        filename: `${page}/page.html`,
        template: path.resolve(pagesDir, `./${page}/html.js`),
        chunks: [page, ‘commons/commons‘],
        hash: true,
        xhtml: true,
    });
    configPlugins.push(htmlPlugin);
});

module.exports = {
    entry: pageEntry,
    output:{
        path: buildDir,
          filename: ‘[name]/entry.js‘
    },
    module:{
        loaders: [
        {
              test: /\.css$/,
              exclude: /node_modules|bootstrap/,
              loader: ExtractTextPlugin.extract(‘css?minimize&-autoprefixer!postcss‘),
        },
        {
              test: /\.less$/,
              include: publicDir,
              loader: ExtractTextPlugin.extract(‘css?minimize&-autoprefixer!postcss!less‘),
        },
        {
              test: /\.js$/,
              include: publicDir,
              loader: ‘babel-loader?presets[]=es2015-loose&cacheDirectory&plugins[]=transform-runtime‘,
        },
        {
              test: /\.html$/,
              include: publicDir,
              loader: ‘html‘,
        },
        {
              test: /\.ejs$/,
              include: publicDir,
              loader: ‘ejs‘,
        },
        {
              test: /\.(png|jpg|gif)$/,
              include: publicDir,
              loader: ‘url?limit=8192&name=./static/img/[hash].[ext]‘,
        },
        {
              test: /\.(woff|woff2|svg|eot|ttf)\??.*$/,
              include: publicDir,
              loader: ‘file?name=static/fonts/[name].[ext]‘,
        }]
    },
    plugins: configPlugins,

    resolve:{
        alias: {
            layout:    path.resolve(publicDir, ‘public-resource/layout‘),
            public:    path.resolve(publicDir, ‘public-resource/public‘),
            wrapURL:path.resolve(publicDir, ‘public-resource/libs/constructInsideUrl.js‘),
        },
        extentions: [‘‘, ‘js‘],
    }
};
时间: 2024-12-07 20:10:46

Nodejs:简单的脚手架(一)的相关文章

nodejs 简单http 文件上传demo

// 这是一个简单的Node HTTP,能处理当前目录的文件 // 并能实现良种特殊的URL用于测试 // 用http://localhost:8000 或http://127.0.0.1:8000 连接这个服务器 // 首先,加载所有要用的模块 var http = require('http'); // HTTP服务器API var fs = require('fs'); // 文件系统API var server = new http.Server(); // 创建新的HTTP服务器 va

NodeJs简单七行爬虫--爬取自己Qzone的说说并存入数据库

没有那么难的,嘿嘿,说起来呢其实挺简单的,或者不能叫爬虫,只需要将自己的数据加载到程序里再进行解析就可以了,如果说你的Qzone是向所有人开放的,那么就有一个JSONP的接口,这么说来就简单了,也就不用我们再利用phantomjs,缓慢的爬了.其实程序还没有做的太过完美,只是简单地可以打印出来说说的内容,明天再做一下,把说说存到数据库里,嘿嘿.做这个呢,需要用到一个开源库,nodegrass,这个库呢也并不是必须的,它是对nodejs里的http.request的封装.其实基本原型就在这里了,所

nodejs 简单安装环境

学习资料 1.深入浅出Node.js 2.Node.js开发指南 简介(只捡了我觉得重要的) Node.js是让Javascript脱离浏览器运行在服务器的一个平台,不是语言: Node.js采用的Javascript引擎是来自Google Chrome的V8:运行在浏览器外不用考虑头疼的Javascript兼容性问题 采用单线程.异步IO与事件驱动的设计来实现高并发(异步事件也在一定程度上增加了开发和调试的难度): Node.js内建一个HTTP服务器,所以对于网站开发来说是一个好消息:  

nodejs简单介绍

Nodejs的特性 J Nodejs基于Javascript语言,Nodejs框架是基于Chrome的V8引擎的运行时,是目前速度最快的 Javascript引擎. J Nodejs标准的web开发框架Express,可以帮 助我们迅速建立web站点,比起PHP的开发效率更高,而且学习曲线更低.非常适合小型网站,个性化网站. J Node.js使用事件驱动,非阻塞I/O模型,轻量.高效,可以完美地处理时时数据,运行在不同的设备上. J 用Nodejs比Java做Web开发要高效10倍?. Nod

nodejs 简单的搭建一个服务器

前言: nodejs 主要是后台语言 模块 自定义 JavaScript 是前台语言 nodejs 是 也是使用我们的 JavaScript 语言,甚至他的引擎都是 chrome 的 v8 引擎,开源,所以学习 nodejs 对于我们前端来说,是一件极其友好的事情 后台的语言: php python Java nodejs 的优势 1. 性能 经过某个不专业的人士测试: nodejs 比 php 的 性能高 86倍 nodejs 运行 1s   php 要运行 一分半 就是写一个项目:php 

express --no-view server 简易服务器 之nodejs中express脚手架生成器

执行前检查是否:  全局安装  npm  i express -generator -g     ① express  --no-view server            --no-view表示不带模板引擎 ② cd server         进入 server文件夹 ③ npm i ④ npm start NPM 使用介绍: https://www.runoob.com/nodejs/nodejs-npm.html 原文地址:https://www.cnblogs.com/xtz-bl

nodejs简单认知和vue的简单学习

nodejs 引入 vue 引入 安装node(安装完node需要重启电脑) npm install nrm -g nrm use taobao nrm test taobao 在idea中新建空工程js-demo,然后新建module vue-demo cd vue-demo npm init -y npm install vue --save 新建html页面,引入vue,开始学习 new Vue(); 传入 el,data,methods,template:标记el所指id位置 {{ }}

Nodejs——简单小说爬虫实现

1 //引入模块 2 const http = require('http') 3 const fs = require('fs') 4 const cheerio = require('cheerio') 5 const iconv = require('iconv-lite') 6 //第一章url 7 const url = 'http://www.81zw.com/book/8634/745331.html' 8 //开始章节数 9 let i = 1 10 //最大获取章节数 11 l

nodejs简单爬虫->下载多特的应用信息

1.新建webSpider.js var http = require('http'); var fs = require('fs'); var iconv = require('iconv-lite'); function webSpider(argument) { this.url = argument.url; //开始的页面地址 this.outpath = argument.outpath || 'g://temp/'; this.filter = argument.filter ||