前端模块化北京赛车开发的价
  • 时间:2019-08-12
  • 点击率:

  &&前端模块化北京赛车官方开发的价北京赛车官方随着互联网的飞速发展,前端开发越来越复杂。本文将从实际项目中遇到的问题出发,讲述模块化能解决哪些问题,以及如何使用 Sea.js 进行前端的模块化开发。

  我们从一个简单的习惯出发。我做项目时,常常会将一些通用的、底层的功能抽象出来,独立成一个个函数,比如

  并像模像样地把这些函数统一放在 util.js 里。需要用到时,引入该文件就行。这一切工作得很好,同事也很感激我提供了这么便利的工具包。

  小杨:我想定义一个 each 方法遍历对象,但页头的 util.js 里已经定义了一个,我的只能叫 eachObject 了,好无奈。

  小高:我自定义了一个 log 方法,为什么小明写的代码就出问题了呢?谁来帮帮我。

  抱怨越来越多。团队经过一番激烈的讨论,决定参照 Java 的方式,引入命名空间来解决。于是 util.js 里的代码变成了

  不要认为上面的代码是为了写这篇文章而故意捏造的。将命名空间的概念在前端中发扬光大,首推 Yahoo! 的 YUI2 项目。下面是一段真实代码,来自 Yahoo! 的一个开源项目。

  通过命名空间,的确能极大缓解冲突。但每每看到上面的代码,都忍不住充满同情。为了调用一个简单的方法,需要记住如此长的命名空间,这增加了记忆负担,同时剥夺了不少编码的乐趣。

  作为前端业界的标杆,YUI 团队下定决心解决这一问题。在 YUI3 项目中,引入了一种新的命名空间机制。

  YUI3 通过沙箱机制,很好的解决了命名空间过长的问题。然而,也带来了新问题。

  看似简单的命名冲突,实际解决起来并不简单。如何更优雅地解决?我们按下暂且不表,先来看另一个常见问题。

  继续上面的故事。基于 util.js,我开始开发 UI 层通用组件,这样项目组同事就不用重复造轮子了。

  其中有一个最被大家喜欢的组件是 dialog.js,使用方式很简单。

  可是无论我怎么写文档,以及多么郑重地发邮件宣告,北京赛车官方时不时总会有同事来询问为什么 dialog.js 有问题。通过一番排查,发现导致错误的原因经常是

  在 dialog.js 前没有引入 util.js,因此 dialog.js 无法正常工作。同样不要以为我上面的故事是虚构的,在我待过的公司里,至今依旧有类似的脚本报错,特别是在各种快速制作的营销页面中。

  上面的文件依赖还在可控范围内。当项目越来越复杂,众多文件之间的依赖经常会让人抓狂。下面这些问题,我相信每天都在真实地发生着。

  以上很多问题都是因为文件依赖没有很好的管理起来。在前端页面里,大部分脚本的依赖目前依旧是通过人肉的方式保证。当团队比较小时,这不会有什么问题。当团队越来越大,公司业务越来越复杂后,依赖问题如果不解决,就会成为大问题。

  文件的依赖,目前在绝大部分类库框架里,比如国外的 YUI3 框架、国内的 KISSY 等类库,目前是通过配置的方式来解决。

  上面的代码,通过requires等方式来指定当前模块的依赖。这很大程度上可以解决依赖问题,但不够优雅。当模块很多,依赖很复杂时,烦琐的配置会带来不少隐患。

  命名冲突和文件依赖,是前端开发过程中的两个经典问题。下来我们看如何通过模块化开发来解决。为了方便描述,我们使用 Sea.js 来作为模块化开发框架。

  Sea.js 是一个成熟的开源项目,核心目标是给前端开发提供简单、极致的模块化开发体验。这里不多做介绍,有兴趣的可以访问看官方文档。

  通过exports就可以向外提供接口。这样,dialog.js 的代码变成

  这其实一点也不神奇。作为前端工程师,对 CSS 代码一定也不陌生。

  Sea.js 增加的require语法关键字,就如 CSS 文件中的@import一样,给我们的源码赋予了依赖引入功能。

  如果你是后端开发工程师,更不会陌生。Java、Python、C# 等等语言,都有include、import等功能。JavaScript 语言本身也有类似功能,但目前还处于草案阶段,需要等到 ES6 标准得到主流浏览器支持后才能使用。

  首先要在页面中引入 sea.js 文件,这一般通过页头全局把控,也方便更新维护。想在页面中使用某个组件时,只要通过方法调用。

  好好琢磨以上代码,我相信你已经看到了 Sea.js 带来的两大好处:

  除了解决命名冲突和依赖管理,使用 Sea.js 进行模块化开发还可以带来很多好处:

  模块的版本管理。通过别名等配置,配合构建工具,可以比较轻松地实现模块的版本管理。

  提高可维护性。模块化可以让每个文件的职责单一,非常有利于代码的维护。Sea.js 还提供了 nocache、debug 等插件,拥有在线调试等功能,能比较明显地提升效率。

  前端性能优化。Sea.js 通过异步加载模块,这对页面性能非常有益。Sea.js 还提供了 combo、flush 等插件,配合服务端,可以很好地对页面性能进行调优。

  跨环境共享模块。CMD 模块定义规范与 Node.js 的模块规范非常相近。通过 Sea.js 的 Node.js 版本,可以很方便实现模块的跨服务器和浏览器共享。

  模块化开发并不是新鲜事物,但在 Web 领域,前端开发是新生岗位,一直处于比较原始的刀耕火种时代。直到最近两三年,随着 Dojo、YUI3、Node.js 等社区的推广和流行,前端的模块化开发理念才逐步深入人心。

  前端的模块化构建可分为两大类。一类是以 Dojo、YUI3、国内的 KISSY 等类库为代表的大教堂模式。在大教堂模式下,所有组件都是颗粒化、模块化的,各组件之间层层分级、环环相扣。另一类是以 jQuery、RequireJS、国内的 Sea.js、OzJS 等类库为基础的集市模式。在集市模式下,所有组件彼此独立、职责单一,各组件通过组合松耦合在一起,协同完成开发。

  这两类模块化构建方式各有应用场景。从长远来看,小而美更具备宽容性和竞争力,更能形成有活力的生态圈。

  总之,模块化能给前端开发带来很多好处。如果你还没有尝试,不妨从试用 Sea.js 开始。

  微信朋友圈原本是人们交流情感、分享日常生活的平台,拿出手机,打开“朋友圈”,看看亲朋好友的最新动态,已经成为人们日常生活必不可少的一部分。不过如今,这里正不知不觉发展成“生意圈”,面膜、衣服、手链、阿胶,烘培饼干、蛋糕、“私房美食”,甚至海外奢侈品代购,各种吆喝声在微信朋友圈里此起彼伏。朋友圈商业味渐浓,让很多网友直呼受不了,买到的东西质量有问题,又碍于情面难以追责,感觉友谊“被绑架”。

  以拼多多等成功实现用户裂变增涨的小程序为先例,小猪电商小编,从中总结出了3种实现方法。

  据举报文章,山东省联社负责人孙开连、人事部长张君违规突击提拔干部。在近30亿重大案件调查期间,于2019年2月24日(周日)突击组织人员提拔干部!周日下午突然通知大家到场,当场提拔正处级,副处级多名干部。

  互联网衍生很多新兴的职业,其中,Web前端工程师就是其一。虽然Web前端出现的时间并不长,但如今在市场上的发展前景却非常可观,薪资也是水涨船高,是很多人进入IT行业的首选。如果你一名刚步入Web前端的新手,下面就让千锋广州Web前端小编老师告诉你一些快速入门的学习方法,助你在Web前端学习上更加顺畅。

  全球市场惊魂,A股冰火两重天,竟有冷门股逆袭称王,不到1个月股价翻倍

  刚刚通过阿里云付费注册域名,按照步骤实名认证什么的都弄了,包括上传身份证照片、邮箱之类的~ 请问我还需要去政府部门进行备案么?就是ICP备案那种~谢谢!

  艾瑞网是艾瑞集团旗下新经济门户网站,为用户提供互联网数据资讯聚合平台。

  WXSS 与 CSS:两者在语言上几乎没有差别,可以直接通用。

  2019年我们将继续革命自己,让米拓人都做“俗气”滴人,也努力为合作伙伴创造价值,让我们的股东、用户、代理商、合作伙伴都“俗”起来。

  如何注册一个好的域名?由于建站的人越来越多,所以域名注册的需求量也是越来越多,从多项统计数据来看,域名注册总量每天基本都可以维持在十万个以上。因此想要注册一个好的域名,尤其是像com域名等主流的顶级域名后缀,要么已经被注册使用,要么在域名投资人手中。想要注册个好的域名真是难上加难啊。

  2.2 被推荐的人第一次成功激活免费产品,推荐人的免费增加4天,同时赠送推荐人虚拟币1个;

  对于需要监听点击事件的元素,应该在 WXML 中使用 bindtap 属性或 catchtap 属性进行绑定。


客服QQ: 点击这里
地址:上海市黄浦区局门路457号8号桥创意园4楼 客服QQ:9490489
Copyright © 2014-2018 北京赛车 版权所有

021-51697771

服务时间:7X10小时

网站地图