小记:vue 及 react 的工程项目入口小结及 webpack 配置多页面应用参考
一、前言
- 闲暇时间,看了下前端的基础知识,有幸参与了公司公众号项目前面的一个阶段,学习到了一些前端框架的相关知识
- 小结了一下 自己练习通过新建一个个文件组织起项目的过程中的一些理解
二、项目入口
vue 中
- 1、首先 webpack 的 entry: 为 app: './src/index.js' ,入口为 js 文件
- 在 webpack 打包后就会在 对应访问的 html 文件里引用 该 js 文件
- 入口 js 的作用
- 初始化的一个全局的 vue 实例,使用实例的 render 方法,挂载 App.vue 组件到当前文件夹下路径下的 index.html 中 (多页面应用中可以是其他文件名,一般跟 js 文件名一致,路径由 webpack 中配置的来控制)
- 在入口 js 中常做的事
- 挂载 store
- 挂载 路由 (VueRouter)
- 设置 filter
- 挂载全局变量如网络请求相关 Vue.prototype.$http = axios
- 引入 reset.css
- 引入 第三方 UI
- 设置 rem 相关
- 2、通过入口 js 来 引用 App.vue 组件
- App.vue 是最外层的一层
- App.vue 中常做的事
- 设置全局的页面滑动、切换动画
- 设置
<router-view/>
- 1、首先 webpack 的 entry: 为 app: './src/index.js' ,入口为 js 文件
react 中
- 1、首先 webpack 的 entry: 为 app: './src/index.js' ,入口为 js 文件
- 在 webpack 打包后就会在 对应访问的 html 文件里引用 该 js 文件
- 入口 js 的作用
- 使用 ReactDom.render 方法 挂载 组件 到 当前文件夹下 index.html 中
- 在入口 js 中常做的事
- 配置 react-redux、redux-thunk 相关
- 引入 reset.css
- 引入 第三方 UI
- 设置 rem 相关
- 2、通过入口 js 来 引用 app.js 组件
- app.js 是最外层的一层
- app.js 中常做的事
- 设置全局的页面滑动、切换动画 (react-addons-css-transition-group)
- 设置路由 (react-router-dom )
- 1、首先 webpack 的 entry: 为 app: './src/index.js' ,入口为 js 文件
三、webpack 多页面配置
参考了部分网上的写法
基于 glob 库,得到正确的 js 入口
// 获得入口 js 文件
let entries = getEntry('./src/pages/**/*.js', './src/pages/'); // getEntry 方法
function getEntry(globPath, pathDir) {
let files = glob.sync(globPath)
let entries = {},
entry,
dirname,
basename,
pathname,
extname
for (let i = 0; i < files.length; i++) {
entry = files[i]
dirname = path.dirname(entry)
extname = path.extname(entry)
basename = path.basename(entry, extname)
pathname = path.normalize(path.join(dirname, basename))
pathDir = path.normalize(pathDir)
if (pathname.startsWith(pathDir)) {
pathname = pathname.substring(pathDir.length)
}
entries[pathname] = ['./' + entry]
}
return entries
}
获取对应 html, 配置 html
// 获取对应 html
let pages = Object.keys(getEntry('./src/pages/**/*.html', './src/pages/')) // 利用 HtmlWebpackPlugin 配置 html
pages.forEach(function (pathname) {
// 配置生成的 html 文件,定义路径等,可根据最终打包的文件要求进行修改
let page = pathname
if (pathname.search('/') != -1) {
page = pathname.split('/').pop()
} // config 对象
let config = {
// html 名字 The file to write the HTML to. Defaults to index.html
filename: page + '.html', // 模板路径
// html-withimg-loader! 处理 html,以支持直接在html中使用img的src加载图片
template: 'html-withimg-loader!' + 'src/pages/' + pathname + '.html', // js 插入位置 When passing true or 'body' all javascript resources will be placed at the bottom of the body element
inject: true, // html 压缩处理
minify: {
// removeComments 移除页面注释,默认为true
removeComments: true, //collapseWhitespace 移除空格、回车、换行符等符号,默认为true
collapseWhitespace: false
}
// favicon: 'path/to/yourfile.ico'
}; if (pathname in module.exports.entry) { // chunks 默认会在生成的 html 文件中引用所有的 js 文件,当然你也可以指定引入哪些特定的文件
// vendors 为第三方库,common 为公共的模块部分,pathname 和 entry 对应 config.chunks = ['common', pathname]; // 给生成的 js 文件一个独特的 hash 值,如 <script type=text/javascript src=bundle.js?22b9692e22e7be37b57e></script> config.hash = false;
} // 在遍历中配置 (需要生成几个 html 文件,就配置几个 HtmlWebpackPlugin 对象)
module.exports.plugins.push(new htmlWebpackPlugin(config)); });
小记:vue 及 react 的工程项目入口小结及 webpack 配置多页面应用参考的更多相关文章
- vue、react、angular三大框架对比 && 与jQuery的对比
前端当前最火的三大框架当属vue.react以及angular了. 但是在做项目的时候,我们怎么去选择呢? 这里做一个比较,希望大家可以有一个比较清晰的认识. vue与react vue和react ...
- Vue.JS React 精彩文章汇总
JavaScript深入系列 [干货] JavaScript数组所有API全解密 [干货] 移动端:页面->手淘互动动效的探索 - IT大咖说 - 大咖干货,不再错过 [扫盲] Jonath ...
- 谈谈我对前端组件化中“组件”的理解,顺带写个Vue与React的demo
前言 前端已经过了单兵作战的时代了,现在一个稍微复杂一点的项目都需要几个人协同开发,一个战略级别的APP的话分工会更细,比如携程: 携程app = 机票频道 + 酒店频道 + 旅游频道 + ..... ...
- Vue和React对比
Vue和React对比 Vue也已经升级到2.0版本了,到现在为止(2016/11/19)比较流行的MVVM框架有AngularJS(也有人认为其为MVC).ReactJS和VueJS,这三个框架中, ...
- vue和react的介绍
这几年前端框架发展的不错,出了不少框架,像微软自己的knockoutjs,angular,vue和最近比较火的react等,之前我有写过前两者的相关文章,今天主要说一下后两者. 介绍 是一个用于构建用 ...
- vue和react全面对比(详解)
vue和react对比(详解) 放两张图镇压小妖怪 本文先讲共同之处, 再分析区别 大纲在此: 共同点: a.都使用虚拟dom b.提供了响应式和组件化的视图组件 c.注意力集中保持在核心库,而将其他 ...
- Vue vs React: Javascript 框架之战
https://baijiahao.baidu.com/s?id=1608210396818353443&wfr=spider&for=pc 原文档 正如我们之前提到的,Word ...
- vue和react总结
一.总结一下Vue和React的区别 相同点: 1.都支持服务器端渲染 2.都有Virtual DOM,组件化开发,通过props参数进行父子组件数据的传递,都实现webComponent ...
- vue、React Nactive的区别(转载)
Vue与React的对比 Vue.js与React.js从某些反面来说很相似,通过两个框架的学习,有时候对一些用法会有一点思考,为加深学习的思索,特翻阅了两个文档,从以下各方面进行了对比,加深了对这两 ...
随机推荐
- <你的孤独,虽败犹荣> 很喜欢的句子
希望未来的工作中能够经常出差,做一个能看到除了湖南之外的世界的人 即使我们一辈子给人打工,也要打自己愿意打的工 正在经历的孤独,我们称之为迷茫,经过的那些孤独,我们称之为成长 青春,是一个容量极其有限 ...
- Codeforces - 77B - Falling Anvils - 几何概型
https://codeforc.es/contest/77/problem/B 用求根公式得到: \(p-4q\geq0\) 换成熟悉的元: \(y-4x\geq0\) 其中: \(x:[-b,b] ...
- PTA 1045【DP】
思路: DP[ i ] 代表以值 i 结尾的当前最长长度. 每次枚举序列数组,dp[ i ] = max( dp[ i ] ,dp[ a[j] ] + 1); #include <bits/st ...
- SnapKit swift实现高度自适应的新浪微博布局
SnapKit swift版的自动布局框架,第一次使用感觉还不错. SnapKit是一个优秀的第三方自适应布局库,它可以让iOS.OS X应用更简单地实现自动布局(Auto Layout).GtiHu ...
- 线段树 洛谷P3932 浮游大陆的68号岛
P3932 浮游大陆的68号岛 题目描述 妖精仓库里生活着黄金妖精们,她们过着快乐,却随时准备着迎接死亡的生活. 换用更高尚的说法,是随时准备着为这个无药可救的世界献身. 然而孩子们的生活却总是无忧无 ...
- 记录一下我的三天清明节假期,TP5.1写企业站
在假期前就计划利用这三天时间写一个企业站,包括pc和wap,和微信公众平台 在计划时有些功能没有想好,导致后面踩了不少坑,前期计划一定要尽量做详细,表字段设计也要考虑好,不然后期开始写代码时会需要来回 ...
- DHCP DHCPv6
为了给网络客户机自动分配IP地址以及生成所需的配置参数,IETF分别给IPV4和IPV6网络定义了相关的协议标准,即DHCP(RFC2131)和DHCPV6(RFC3315),以及扩充的选项标准.本文 ...
- LeetCode初级算法(树篇)
目录 二叉树的最大深度 验证二叉搜索树 对称二叉树 二叉树的层次遍历 将有序数组转换为二叉搜索树 二叉树的最大深度 二叉树,所以可以考虑用递归来做.由于根节点已经算过了,所以需要加上1:每次返回都是以 ...
- TFS 签入时,提示“变更集注释策略 中的内部错误……”
提示: 变更集注释策略 中的内部错误.加载 变更集注释策略 策略时出错(策略程序集“Microsoft.TeamFoundation.PowerTools.CheckinPolicies.Change ...
- devtools实现springboot的热部署
spring-boot-devtools介绍: spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去.原理是在发现代码有更改 ...