为了账号安全,请及时绑定邮箱和手机立即绑定

前端组件化思维与技巧

开发流程

  • 技术选型分析
  • 构建工具
    • 资源压缩 静态资源替换 模块化处理 编译处理
    • gulp (任务管理,文件操作:流式,读一次,然后内存写入)
    • grunt (任务管理,文件操作:输入输出,先读取,再写入,重复循环)当项目复杂后,IO效率就非常低
    • webpack (编译,打包)
    • fis (百度)
    • prepack (脸书,及时编译工具,无DOM,BOM)
    • rollup
  • MVVM框架 (作者对Bug的处理速度)
    • 原理能不能吃透
    • Vue
    • React
    • Ag
  • 模块化设计
    • css
    • js
  • 自适应方案
    • 一份代码,多设备适配

知识点

1、基本概念

  • CSS像素、设备像素、逻辑像素、设备像素比
  • viewport
  • rem

2、工作原理

  • 利用viewport和设备像素比调整基准像素
  • 利用px2rem自动转换css单位
    图片描述

图片描述

彩蛋:关于layout viewport ,visual viewport和 ideal viewport的区别:https://www.cnblogs.com/2050/p/3877280.html
图片描述

  • 代码维护及复用性设计
    • 需求变更
    • 产品迭代
    • Bug变更
    • 新功能开发
  • 工程构建(业务开发)
  • 测试验证
  • 发布上线

CSS模块化设计

  • 设计原则
    • 可复用可继承要完整
    • 周期性迭代 (根据项目要求来设计,重构,模仿)
  • 设计方法
    • 先整体后部分再颗粒化
    • 先抽象再具体
      图片描述
      图片描述

JS模块化设计

  • 原则
    • 高内聚,低耦合
    • 周期性迭代
  • 方法
    • 整体-部分-颗粒化
    • 尽可能抽象

SPA设计

  • 前后端分离
  • 减轻服务器压力
  • 增强用户体验,减少等待时间
  • Prerender预渲染优化SEO
  • 工作原理
    • History API 优雅
    • Hash 兼容性
      图片描述
<a href="" class="api a">a</a>
    <a href="" class="api b">b</a>
    <script type="text/javascript">
    // 注册路由
    document.querySelectorAll('.api').forEach(item=>{
        item.addEventListener('click',(e) => {
          e.preventDefault();
          let link = item.textContent;
          window.history.pushState({name:'api'},link,link);
        }, false)
    });
    // 监听路由
    window.addEventListener('popstate',(e) => {
      console.log({
        location:location.href,
        state:e.state
      });
    }, false);

图片描述

<a href="" class="hash a">a</a>
    <a href="" class="hash b">b</a>
    <script type="text/javascript">
       // 注册路由
        document.querySelectorAll('.hash').forEach(item => {
          item.addEventListener('click', (e) => {
            e.preventDefault();
            let link = item.textContent;
            location.hash = link;
          }, false)
        });
        // 监听路由
        window.addEventListener('hashchange', (e) => {
          console.log({
            location: location.href,
            hash: location.hash
          });
        }, false);

    </script>

Demo

  • 需求分析
  • 图片描述
    图片描述

小知识点

  • 优先使用背景图插入图片
  • 没有数据驱动,而且复用次数低,复杂度过低的可以不抽象成组件
  • APP页面使用flex布局的重要性

生产构建

图片描述

抽取
npm run build
压缩
webpack文档
npm install uglifyjs-webpack-plugin --save-dev 
cssloader ?minimize

发布部署

图片描述

彩蛋:Atom推荐插件
图片描述

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
PHP开发工程师
手记
粉丝
1.6万
获赞与收藏
1811

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消