开箱即用的多页面脚手架, 基于webpack4.2x babel7.1x

Webpack-seed

开箱即用的多页面脚手架, 基于webpack4.2x babel7.1x模块化开发可复用的现代化网站(Without Vue Angular React)
预览
如果感兴趣该项目, 请点个 star

及时关注项目更新, 请点个 watch

特性 (Feature)

  • 支持前后端分离开发
  • 配置完整的打包方案
  • 支持本地开发热更新
  • 集成代码风格校验Eslint
  • ES6编写源码,编译生成生产代码
  • 开发(生产)环境代码自动注入页面, 专注于开发
  • 编译后的程序不依赖于外部的资源, 可放到CDN

使用指南 (Usage)

下载使用

git clone https://github.com/BiYuqi/webpack-seed.git

cd webpack-seed

npm install

本地开发(dev)

npm run dev

打包(build)

  • 默认情况下,该配置方案假设你的应用是被部署在一个域名的根路径上例如 https://www.my-app.com/
  • 如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径
  • 例如,如果你的应用被部署在 https://www.my-app.com/my-app/
  • 则设置 webpack的output.publicPath 为 /my-app/
  • 本项目由于需要临时部署在git-pages预览 所以改配置临时改为/webpack-seed/
  • 普通打包(大部分) npm run build 默认 '/'
  • 该命令具体请看package.json scripts命令配置
  • 配置详情
  • scripts命令配置
  • 预览
// 普通打包(大部分) npm run build publicPath默认 '/'
npm run build

// 打包时 npm run build:git 该命令会打包的路径会自动带上github项目地址/webpack-seed/
//(当发布环境不是服务器根路径,都可以采用该方案,只需更改路径名称即可,本项目二级路径为webpack-seed)
npm run build:git

开发规范 (Standard)

import引入 export导出 具体请参考 ES6 module语法

/**
 * 每个页面(模板)都必须包含(基础)以下文件
 */
index.js // (业务逻辑代码入口)
tpl.js // (模板拼装入口)
模块名.ejs // (页面编写入口)

/**
 * 以下可根据自己需要添加
 * 模块下可以建立文件目录用来填写业务代码,上述只是基础规范,扩展性比较强
 * /
eg:
  src/views/about/ 在该目录下创建文件夹/aboutCom
        ---- a.js 业务a代码
        ---- b.js 业务b代码
都是需要通过ES6规范导出导入
  • 页面公用css,全部需要在公用base.js引入(便于webpack处理),详情,然后每个页面引入base.js详情

  • 页面开发跳转页面都是基于打包后输出的绝对路径进行编写 html/模块.html 详情

  • 全部采用模块化开发,每个模块都是一个文件夹 详情 (开发环境views下创建)

  • 该文件夹包含 模块模板写页面(模块名.ejs) + 模板混合(tpl.js) + index.js(该模块业务逻辑) 打包后会自动注入,无需手动引入js文件 详情

  • 各个js功能模块之间互相引用,一律使用ES6语法

  • 样式编写基于各模块入口js直接 import '样式地址 ' 参考

  • 页面(.ejs)--图片引入方式 详情

  • assets是webpack resolve配置好的别名,代表assets目录

<img src="<%= require('assets/image/demo.png') %>" alt="">
  • 页面header配置位置(即nav导航栏配置)详情
  • 页面footer配置位置(即footer底部栏配置)详情

目录介绍 (Introduction)

  • build/
  • ---config.js 开发,打包基础配置
  • ---utils.js 多入口,多页面基础配置
  • ---webpack.base.config.js 基础配置
  • ---webpack.dev.config.js 开发环境
  • ---webpack.prod.config.js 打包环境
  • src/
  • ---common/ 项目公用资源(图片, 各种工具等)
  • ----------------libs.js 第三库自动渲染到页面(此处配置的静态资源,会自动注入到页面) 配置 自动注入源码 底层实现
  • ---components 项目模板 (复用的页面片段,目前该模板已趋于稳定,细节样式需调整)
  • ---layout/ 项目结构模板 (供各个子模块调用,后续可扩展多样化模板,可以添加不带侧边栏的模板等)
  • ----------------layout 默认模板(header+footer)
  • ----------------layout-without-nav [可以添加类似模板] #todo
  • ---views/ (模块开发文件夹)
  • ----------------子模块,各种模块页面
  • ---vendor/ 第三方库存放在此

输出目录 (Output)

查看输出

  • dist/
  • ---html
  • ---image
  • ---media
  • ---css
  • ---js
  • ---lib
  • ---index.html

注意:如果有音视频等,会被打包在media目录

TODO

  • [x] 添加ejs模板,进行页面(首尾)复用(ejs在本项目中目前只做模板引用,具体页面目前只能写html,后期考虑增加模板支持,暂定art-template art-template中文文档
  • [x] mini-css-extract-plugin 提取js内引入scss文件失败, 打包后依然在js文件(已解决)
  • [x] 首页页面模板未完成(单独处理打包)
  • [x] 添加第三方库以链接的方式引入
  • [x] 增加ESLint代码校验
  • [x] 增加两个文件夹,一个是fix IE兼容, 一个是引入的公用库,自动加载第三方库到页面,避免手动填写
  • [ ] 添加多样化layout模板支持(示例)
  • [ ] 添加完整网站demo示例
  • [ ] 添加doc使用说明以及实现思路解析

LONG TODO(Base on master)

  • [ ] 建立分支web-system(后台管理系统模板), web-pc (大众网站模板), web-mobile(移动端模板)

实现思路 (Ideas)

  • build/utils.js 为js, html多入口逻辑方法
  • ejs目前仅仅是共用(比如header, footer, nav, sidebar)部分整合, 模块开发暂不支持动态数据
  • 每个js就是一个入口
  • 每个入口打包为一个html页面(自动注入相关js)
  • TODO 待有空仔细讲解下具体实现

更新日志 (Update log)

2018.10.11

  • 静态资源vendor文件夹分类,common与fixIe 这两个文件夹的文件都会被自动注入到页面引用; 使用者只需要配置lib.js即可

2018.10.11

  • 单独抽离css样式问题修复

2018.10.07

  • 修改打包后js输出路径,原有js跟着页面文件夹打包后在一起, 现在统一打包到dist/js目录下, 理由是页面script 展示好看...属于优化项
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容