【PC网站前端架构探讨系列】结合公司网站首页,谈前端模块化开发与网站性能优化实践...

news/2024/5/11 21:19:50/文章来源:https://blog.csdn.net/weixin_30636089/article/details/95103971

说在前面

      上午给大家分享的个人认为比较全,比较官方,比较清晰的grunt使用教程,被挪出首页了,不过没关系,毕竟不是原创,大家想看,我现在贴出地址:

     http://www.cnblogs.com/sybboy/p/4877055.html

    下面可是我自己的东西,算是这段时间搞前端架构的总结吧:

 

目录

 

1.遇到的问题

2.目标

3.如何解决

4.结果分析

5.尚未解决

 

 

遇到的问题

   

  问题1----脚本混乱,没有层次和固定代码位置

  问题2----脚本和css请求较多,请求未压缩,文件未压缩合并

  问题3----代码目录混乱,引用不清晰

  问题4----脚本和css没有添加版本号管理

  

   

目标 

   1.整理页面的代码,必要的代码模块化

   2.文件合并压缩,外部引用的脚本要加密混淆

   3. 网站目录下,所有脚本 样式 图片统一存放

   4. 添加版本号

 

如何解决

  

     问题1----脚本混乱,没有层次和固定代码位置

     

      使用seajs 将代码模块化,用define关键字定义模块,用require调用外部脚本类库及插件,模块内部使用json形式将文件中的代码按业务以及功能分类梳理

     

 

      使用说明:

       1.页面首先引用seajs库

       2.按照固定格式 ,封装代码模块

          

 1    define([“jquery”,‘../index-plugin.min’],function(require){       
 2                                                                   //方括号中的为依赖项
 3 
 4                   var $=require(‘jquery’);            //require 调用依赖项
 5 
 6                    require(‘../index-plugin.min’)($);    //插件调用方式
 7 
 8                    var MOD = { 方法A:function(参数){},方法B…..};
 9 
10                    return MOD;
11 
12    });
View Code

 

       3.页面配置seajs以及引用模块代码

              现全站配置统一放于config.js

             具体配置说明:http://liuxiaofan.com/2013/12/11/1547.html 

         

             引用:

            seajs.use([‘jquery’,‘business/index.min’],function($,I){  //1.这里是方法内容  2.方括号中的为引用的类库以及模块文件  3. 参数中分别对应相应的引用             } )    

 

   问题2----脚本和css请求较多,请求未压缩,文件未压缩合并

 

   页面的脚本和样式处理统一使用的grunt来处理,使用很简单:

  

   安装过程内容比较多,具体看下我的技术博客:

        http://www.cnblogs.com/sybboy/p/4877055.html

   

      注意使用grunt,个人感觉配置很重要,命令就一个grunt,这是我用到的配置:

      

  1   module.exports = function(grunt) {
  2 
  3     // 配置
  4 
  5      grunt.initConfig({
  6 
  7         pkg : grunt.file.readJSON('package.json'),
  8 
  9         // uglify : {
 10 
 11             // options : {
 12 
 13                 // banner : '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
 14 
 15             // },
 16 
 17             // build : {
 18 
 19                 // src : 'src/js/index.js',
 20 
 21                 // dest : 'dest/js/index.min.js'
 22 
 23             // }
 24 
 25         // }
 26 
 27   // concat : {
 28 
 29             // domop : {
 30 
 31                 // src: ['src/index-plugin.min.js','wow.min.js'],
 32 
 33                 // dest: 'dest/index-plugin2.min.js'
 34 
 35             // }
 36 
 37         // }
 38 
 39     // cssmin: {
 40 
 41       // add_banner: {
 42 
 43   // // options: {
 44 
 45     // // banner: '/* index css file by peng 20151009*/'
 46 
 47   // // },
 48 
 49   // files: {
 50 
 51     // 'dest/css/index.min.css': ['src/css/**/*.css']    // 合并并压缩 path/to 目录下(包含子目录)的所有css文件
 52 
 53   // }
 54 
 55      // }
 56 
 57     // combine: {
 58 
 59   // files: {
 60 
 61     // 'path/to/output.css': ['path/to/input_one.css', 'path/to/input_two.css']
 62 
 63   // }
 64 
 65     // },
 66 
 67     // minify: {
 68 
 69   // expand: true,        // 启用下面的选项
 70 
 71   // cwd: 'src/css/',    // 指定待压缩的文件路径
 72 
 73   // src: ['*.css', '!*.min.css'],    // 匹配相对于cwd目录下的所有css文件(排除.min.css文件)
 74 
 75   // dest: 'dest/css/',    // 生成的压缩文件存放的路径
 76 
 77   // ext: '.min.css'        // 生成的文件都使用.min.css替换原有扩展名,生成文件存放于dest指定的目录中
 78 
 79     // }
 80 
 81   //}
 82 
 83   // uncss: {
 84 
 85     // dist: {
 86 
 87   // // options: {
 88 
 89     // // ignore: ['#added_at_runtime', '.created_by_jQuery']
 90 
 91   // // },
 92 
 93   // files: {
 94 
 95     // 'src/css/index_base.css': ['src/html/index.html']
 96 
 97   // }
 98 
 99     // }
100 
101     // },
102 
103     imagemin: {
104 
105             /* 压缩图片大小 */
106 
107             dist: {
108 
109                 options: {
110 
111                     optimizationLevel: 3 //定义 PNG 图片优化水平
112 
113                 },
114 
115                 files: [
116 
117                         {
118 
119   expand: true,
120 
121   cwd: 'src/img/activity',
122 
123   src: ['**/*.{png,jpg,gif}'], // 优化 img 目录下所有 png/jpg/jpeg 图片
124 
125   dest: 'dest/img/activity' // 优化后的图片保存位置,覆盖旧图片,并且不作提示
126 
127                        }
128 
129                     ]
130 
131                 }
132 
133             }
134 
135     });
136 
137    
138 
139     // 载入concat和uglify插件,分别对于合并和压缩
140 
141     //grunt.loadNpmTasks('grunt-contrib-concat');
142 
143     //grunt.loadNpmTasks('grunt-contrib-uglify');
144 
145   //grunt.loadNpmTasks('grunt-contrib-cssmin');
146 
147   //grunt.loadNpmTasks('grunt-uncss');
148 
149   grunt.loadNpmTasks('grunt-contrib-imagemin');
150 
151     // 注册任务
152 
153     grunt.registerTask('default', ['imagemin']);
154 
155 };
156 
157  
View Code

 

结果分析

  之前:

     首页样式与脚本的请求

      

   

 

结合yslow,可以看出首页总共有74个请求,总共1882kb,其中脚本11个请求,180kb左右,加载脚本需要2.68s;样式8个请求,占324kb,加载样式所需35ms,大部分请求在图片

  之后:

    首页样式与脚本的请求

    

   

结合yslow,可以看出优化后的首页总共有63个请求,总共1631kb,其中脚本9个请求,150kb左右,加载脚本需要2.2s;样式2个请求,占200kb,加载样式所需8ms,大部分请求在图片

 

   结论:页面请求减少11个,请求总量减少250多kb,请求时间减少0.5s左右

 

  尚未解决

     

   很明显通过上次优化,请求量以及时间还是个问题,效果不太明显,下面是使用page speed分析的结果:

   

  问题一:

  网站的请求没有进行gzip压缩,预计压缩后请求尺寸至少小一半

     

     

     问题二:

  图片过大,可以适当压缩

     

  问题三:

  页面的HTML代码压缩

     

 

 

 

 

 

 

 

 

   

转载于:https://www.cnblogs.com/sybboy/p/4877696.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_723978.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

帝国网站管理系统 恢复栏目目录 建立目录不成功!请检查目录权限 Godaddy Windows 主机...

近期学习 帝国网站管理系统EmpireCMS_6.6os_SC_UTF8&#xff0c;安装完成以后在恢复栏目目录时出现 建立目录不成功!请检查目录权限 错误发现 在d目录下没有 file 文件夹。在d目录建立file文件夹后。在后台恢复目录 。就成功了。原因。Godaddy Windows 主机 在解压缩包的时候 如…

Windows Azure 网站的 IP 和域限制

编辑人员注释&#xff1a;本文章由 Windows Azure 网站团队的首席项目经理 Stefan Schackow 撰写。 配置 Azure 网站 (WAWS) 的 IP 和域限制一直是用户最迫切希望我们提供的功能之一&#xff0c;现在这个功能终于可以使用了。IP 和域限制提供了一个附加安全选项&#xff0c;它还…

批量修改IIS网站路径的方法

公司服务器&#xff08;windows server2003&#xff09;硬盘出现问题&#xff0c;F盘的数据转移到了G盘&#xff0c;硬盘的路径除了盘符变化了之外&#xff0c;其余都没变&#xff0c;访问IIS&#xff0c;提示路径错误&#xff0c;改吧&#xff0c;网站——右键——属性——主目…

对搜狐、网易和TOM三大门户网站的SQL注入漏洞检测

对搜狐、网易和TOM三大门户网站的SQL注入漏洞检测 本文节选自《大中型网络入侵要案直击与防御》一书 此外&#xff0c;笔者对搜狐及TOM和网易这三大门户网站作了注入攻击检测&#xff0c;发现同样存在明显的注入漏洞&#xff0c;安全性很糟糕。 1.MySQL注入检测搜狐门户网站 首…

SEO Enable Your Javascript Website

2019独角兽企业重金招聘Python工程师标准>>> Overview This is guide to using the AjaxSnapshots service to provide HTML snapshots of your website to search engines like Google and Bing. We have included detailed instructions for configuring popular …

10个有用的排版技巧提升你网站的可读性

为什么80%的码农都做不了架构师&#xff1f;>>> 排版在网页设计中经常被忽略。其实这是很傻逼的&#xff0c;因为注重网页排版确实可以提高你的网页设计水平和可读性。下面&#xff0c;我列出了10个非常有用的排版技巧让你的网站看起来更好。 1、纠正行高 最常见的…

大流量网站的底层系统架构

动态应用&#xff0c;是相对于网站静态内容而言&#xff0c;像我们.NET 服务器端语言开发的网络应用软件&#xff0c;比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。 大型动态应用系统平台主要是针对于大流量…

55+手绘网站设计 – 构建极具创新效果的网站

手绘网页设计无疑是创建个性化页面并获取众多关注的好办法。 尽管手绘在网页设计中不是最热门的&#xff0c;但却是很常见的方法。如你在以下的实例中所见&#xff0c;将手绘融入网页设计有很多种方法&#xff0c;都看上去很棒&#xff01;正如其他任何艺术形式一样&#xff0c…

《分享》学习单页网站制作的20个优秀案例

单页网站如果设计得当&#xff0c;是一个把所有的内容放到前沿和中心很好的方式&#xff0c;能够增加访问者看到它的机会。因此今天&#xff0c;我们收集了一组非常出色的单页网站来推荐给大家。如果大家想了解这些精美网站是如何实现的&#xff0c;可以看我之前分享的文章《谈…

WAP应用及手机网站的现状

2019独角兽企业重金招聘Python工程师标准>>> 目前&#xff0c;使用移动电话访问网上信息的方式主要有两种&#xff1a;其一&#xff0c;由电信增值服务(TelephonyValue Added Services)直接在无线网络中提供WML 的Web 格式的信息服务&#xff1b;其二&#xff0c;通…

网站发布

1.首先在服务器上建数据库&#xff0c;建表&#xff0c;插入数据 create database student create table students( sno char(10), sna char(10) ) insert into students values (001,N张三)2.在本地计算机上编程&#xff0c;连接到数据库 <body><%Connection con nu…

[源码和文档分享]基于JavaEE轻量级SSM框架和Maven构建的校友录网站设计与实现

摘要 校友作为高校的一种重要资源&#xff0c;在促进高校专业教学改革、募集高校筹资办学途径、促进校企合作、加强毕业生感情交流、提升大学生就业质量等方面发挥着重要作用。然而目前我校并没有一个系统可以追溯毕业生的情况。因此&#xff0c;校友们需要一个平台&#xff0c…

36个时尚创意iPhone App网站设计

2019独角兽企业重金招聘Python工程师标准>>> iPhone 的APP应用程序都是只能集成在APP Stone里下载的&#xff0c;但是有一个漂亮的介绍网站也是必须的&#xff0c;今天收集分享&#xff1a;36个时尚创意iPhone App网站设计&#xff0c;希望其中有你喜欢和需要的&…

优秀网页设计:25个最佳的摄影师作品网站

网页设计师经常浏览其他设计师的作品集网站来获取灵感和想法并用于自己的工作中。摄影师&#xff0c;和设计师一样&#xff0c;需要一个对访客有吸引力的作品网站&#xff0c;向潜在客户展示他们的创作&#xff0c;通常会提供一些摄影师的传记信息&#xff0c;使人们更容易联系…

sonne_game网站开发02spring+mybatis框架搭建

从最开始搭框架谈起&#xff0c;而且&#xff0c;我不仅仅会讲how&#xff0c;还会努力讲why。因为对于web开发&#xff0c;由于有太多好的框架、组件、工具&#xff0c;使得how往往不是那么深刻&#xff0c;背后的why更值得专研。如果有初学者关注我这个系列&#xff0c;也一定…

25个具有灵感的餐厅网站设计案例

对于餐饮业来说&#xff0c;网站能够对网上订餐的业务产生重大影响。无论是允许客户查看菜单和精品&#xff0c;还是他们找到一个位置&#xff0c;&#xff0c;注册一个邮件列表&#xff0c;有很多餐馆可以从网站中受益的方式&#xff0c;。 在这篇文章中&#xff0c;我们将展示…

继杀毒软件免费之后 网站安全也免费!

前几年刚有杀毒软件免费的时候&#xff0c;各大安全软件厂商还很不适应。冷嘲热讽者有之&#xff0c;不屑一顾者有之&#xff0c;厉声痛斥者有之。而现在看来&#xff0c;这只是一种常见的商业 模式而已&#xff0c;并没有什么可说的。而市场逐渐成熟以后&#xff0c;免费杀毒软…

Tap企业建站系统:帮助中小企业快速构建营销网站

据权威统计部门统计&#xff0c;截止2011年底我国网民总数将突破5.3亿&#xff0c;网购市场交易规模超7500亿元&#xff0c;随着我国互联网的飞速发展和网民数量的不断增加&#xff0c;利用互联网宣传企业的形象和产品对于企业来来说越来越重要。 传统的企业建立企业网站一般有…

从零开始学建站-域名篇

从零开始学建站-域名篇域名的基础知识域名俗称网址&#xff0c;很多人对于一个网站的最初印象可能正是从这些字符串开始的。为了给访问者留下一个深刻的第一印象&#xff0c;域名的选择在网站建设过程中有着很大的作用。一个好的域名可以迅速提高网站的知名度&#xff0c;在一定…

MVC4.0网站发布和部署到IIS7.0上的方法

链接地址&#xff1a;http://www.th7.cn/Program/net/201403/183756.shtml 最近在研究MVC4&#xff0c;使用vs2010&#xff0c;开发的站点在发布和部署到iis7上的过程中遇到了很多问题&#xff0c;现在将解决的过程记录下来&#xff0c;以便日后参考&#xff0c;整个过程主要以…