一、前言

  • 闲暇时间,看了下前端的基础知识,有幸参与了公司公众号项目前面的一个阶段,学习到了一些前端框架的相关知识
  • 小结了一下 自己练习通过新建一个个文件组织起项目的过程中的一些理解

二、项目入口

  • 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/>
  • 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 )

三、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 配置多页面应用参考的更多相关文章

  1. vue、react、angular三大框架对比 && 与jQuery的对比

    前端当前最火的三大框架当属vue.react以及angular了. 但是在做项目的时候,我们怎么去选择呢?  这里做一个比较,希望大家可以有一个比较清晰的认识. vue与react vue和react ...

  2. Vue.JS React 精彩文章汇总

    JavaScript深入系列  [干货] JavaScript数组所有API全解密  [干货] 移动端:页面->手淘互动动效的探索 - IT大咖说 - 大咖干货,不再错过 [扫盲] Jonath ...

  3. 谈谈我对前端组件化中“组件”的理解,顺带写个Vue与React的demo

    前言 前端已经过了单兵作战的时代了,现在一个稍微复杂一点的项目都需要几个人协同开发,一个战略级别的APP的话分工会更细,比如携程: 携程app = 机票频道 + 酒店频道 + 旅游频道 + ..... ...

  4. Vue和React对比

    Vue和React对比 Vue也已经升级到2.0版本了,到现在为止(2016/11/19)比较流行的MVVM框架有AngularJS(也有人认为其为MVC).ReactJS和VueJS,这三个框架中, ...

  5. vue和react的介绍

    这几年前端框架发展的不错,出了不少框架,像微软自己的knockoutjs,angular,vue和最近比较火的react等,之前我有写过前两者的相关文章,今天主要说一下后两者. 介绍 是一个用于构建用 ...

  6. vue和react全面对比(详解)

    vue和react对比(详解) 放两张图镇压小妖怪 本文先讲共同之处, 再分析区别 大纲在此: 共同点: a.都使用虚拟dom b.提供了响应式和组件化的视图组件 c.注意力集中保持在核心库,而将其他 ...

  7. Vue vs React: Javascript 框架之战

    https://baijiahao.baidu.com/s?id=1608210396818353443&wfr=spider&for=pc    原文档 正如我们之前提到的,Word ...

  8. vue和react总结

    一.总结一下Vue和React的区别 相同点:   1.都支持服务器端渲染     2.都有Virtual DOM,组件化开发,通过props参数进行父子组件数据的传递,都实现webComponent ...

  9. vue、React Nactive的区别(转载)

    Vue与React的对比 Vue.js与React.js从某些反面来说很相似,通过两个框架的学习,有时候对一些用法会有一点思考,为加深学习的思索,特翻阅了两个文档,从以下各方面进行了对比,加深了对这两 ...

随机推荐

  1. 结合jenkins以及PTP平台的性能回归测试

    此文已由作者余笑天授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 1背景简介 1.1 jenkins Jenkins是一个用Java编写的开源的持续集成工具.在与Oracle ...

  2. 洛谷P1022 计算器的改良

    P1022 计算器的改良 题目背景 NCL是一家专门从事计算器改良与升级的实验室,最近该实验室收到了某公司所委托的一个任务:需要在该公司某型号的计算器上加上解一元一次方程的功能.实验室将这个任务交给了 ...

  3. Docker-Zerotier

    1. 拉取镜像 docker pull zerotier/zerotier-containerized 2. 生成并运行容器 docker run \ --name=zerotier-one \ -- ...

  4. QuotaExceededError: The quota has been exceeded. localStorage缓存超出限制

    今天在项目中遇到了一个问题,localStorage存储超出限制.报错信息如标题.这个是因为最近做了一波优化,把导航栏和一些用户信息本地化存储,都放在localStorage里,也不是每个用户会出现这 ...

  5. 面试d090305知识点准备01

    1.1  类成员访问[jL1] 权限 1.2  写个双线程,计算50内的奇偶数 1.3  打印等腰三角形 1.4  运算符优先级 括号,非正负和自增减(右到左),乘除加减,等于不等于,逻辑与和或,然后 ...

  6. Apple开发者账号更改公司名称

    对于大多数的开发者而言,可能很少遇见要修改账户的公司名称的问题,本来公司之前是这个名称,但是后来改名为另外的名称,这样的话在Apple开发者账号上的公司名称再用就不好了,所以就需要到Apple dev ...

  7. POJ1044 Date bugs

    题目来源:http://poj.org/problem?id=1044 题目大意: 与众所周知的”千年虫“类似,某些计算机上存在日期记录的bug.它们的时钟有一个年份周期,每当到达最大值时,就会自动跳 ...

  8. Python网络爬虫(三)

    AJAX学习 AJAX=Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).通俗来说,AJAX是一种无需加载整个网页的情况下,通过在后台与服务器 ...

  9. ACM-ICPC 2018 南京赛区网络预赛 Lpl and Energy-saving Lamps (线段树:无序数组找到第一个小于val)

    题意:n个房间,每个房间有ai盏旧灯,每个月可以买m盏新灯,要求:按房间顺序换灯,如果剩下的新灯数目大于ai,那么进行更换,否则跳过该房间,判断下一个房间.如果所有房间都换完灯,那么久不会再买新灯. ...

  10. Angular2.0的学习(三)

    第三节课:依赖注入 1.什么是依赖注入模式及使用依赖注入的好处 2.介绍Angular的依赖注入实现:注入器和提供器 3.注入器的层级结构