【分享】WeX5的正确打开方式(2)

    我的上篇文章介绍了WeX5中基本的页面布局和交互事件写法,有人私信我为什么源码中的js要那样写,HTML源码的结构是怎样的之类。那今天就总结一下Hello World的源码结构,才识有限,有疑问欢迎大家继续私信我,一起钻研 ,一起进步。

HTML部分

   在上篇Hello World的案例中,我们是通过新建一个w文件来进行页面样式布局的,这里可能有同学会疑惑:怎么没看见HTML文件呢?最终的HTML文件在哪?而且w文件的结构也跟我们常见的网页结构不同啊,常规的<hear>、<body>标签都没有呢,这是怎么回事?

  首先要明确的一点就是:w文件只是一个页面片段,通俗地说就是一小段HTML代码。在实际运行的时候,比如说调试的时候WeX5会将该页面片段以及相应的资源加载到一个页面框架中,从而获得最终的整页显示效果。也就是说,可以将很多w文件加载到一个页面中,比如官方的外卖案例中,地图定位被做成一个w文件,然后在需要的时候中调用它,这就是所谓的按需加载了。

  

   

    那怎样得到一个完整的页面呢?这就需要通过编译了,具体可以参考WeX5官方的Hello World教程中的编译和部署。简单来说就是在Native目录下新建一个本地App,指定主页为Hello World的w文件,然后执行“编译使用到的UI资源”。编译后在www目录下会有一个index.html文件,这就是整个页面的html文件。

    先看看Hello World中的w文件源码(点击编辑器左下角的源码标签):

    

    从上到下分别是window组件、model组件、output组件和button组件。window组件就是整个w文件的容器,output组件和button组件是我们添加上去的,都很好理解。但是怎么会有个model组件呢?生成的页面上好像也没看见这个model组件呀?这是用来做什么的呢?

    在页面应用中,除了UI和人机交互之外,我们还需要做很多数据的处理。简单的应用中我们直接就把数据嵌入到js的变量中去了。但是数据比较复杂的情况下,这种做法在管理上比较困难了。WeX5的做法是将数据单独抽出来做成一个独立的data组件,每个data组件管理相应的数据,规模较大的应用上会有比价多的data组件,所以就需要一个容器来接纳这些data组件,这个容器就是model组件了。

    注意:上篇中也有介绍js源码中的Model对象,实际上这两个model代表含义是一样的,都是代表着这个页面片段的所有资源(包括变量、dom节点等)。当然,好奇的同学可以试过删除它但发现没什么影响,这里要了解HTML源码中的model是整个model的一个映射,js中的model才是源头。

  再看看完整的html文件,由于WeX5采用了按需加载的机制,所以必须要到浏览器打开才能看到真正完整的整页页面哦:

    

  红框部分为w文件编译而成的HTML代价,可以看到编译后的代码增加了很多内容,有为了避免命名冲突而加的,有将数据绑定关系转换过来的内容等。一般来说我们用WeX5做开发只需要做好w文件即可,并不需要直接写现成的HTML代码。

JavaScript部分

先打开js源码(点击编辑器左下角的JS标签):

   

      

  熟悉Html5 app 开发的同学一眼就能看出,这是模块化的写法。WeX5中采用的是AMD规范的requirejs实现模块化开发,每个w文件自动配置一个同名的js文件,在页面加载的时候自动加载相应的js文件。js文件中所有的js代码被包裹在一个define语句里面,同时在内部定义了一个Model对象并在最后输出这个Model对象。其实这里的思路也很简单,就是将所有与该w文件相关的js代码放入define中隐藏起来,避免污染全局变量(这一点上一篇也说过),同时通过Model对象向外界暴露相应的接口,这样外界就可以通过这些接口对内进行操作了。另外,第一二行定义变量就是引入jQuery和justep框架,跟平常使用jQuery一样的,如果要引入其他模块也可以用同样的方式。当然,你也可以写成
define([引用模块1,引用模块2], function(模块1参数,模块2参数) { 执行代码 } ),采用这种写法要注意各个参数与模块对应起来,否则就会出错。

  说了这么多,那我们的代码应该怎么写?

需要对外暴露的信息写入var Model = function(){};中,需要对外暴露的方法推荐写到Model原型里(Model.prototype.你的方法=function(){};),其他隐藏信息直接写到define内即可。比如:

  

  变量a、b和函数add都不在Model内,也就是这些信息外界都不能访问到,这样就实现了模块内部的封装。更多关于前端模块化开发的内容,可以看看阮一峰的博文:Javascript模块化编程。

  另外还要一点:在设计编辑器中直接绑定的变量,都是在Model之下的。比如增了一个input然后将bind-value设置为myValue,那么这个myValue变量就是在Model之下的,可以通过myValue来访问。

  总结:Model就是js模块对外的接口,w页面与同名js文件的联系通过绑定机制来实现。

CSS部分

  大家看到HTML源码的时候也应该发现了,通过可视化编辑器设置的样式是内联式的。很多人第一反应就是内联样式不好,但不好在哪?外联的好处又在哪?

内联样式因为直接写入HTML中,表现与结构重度耦合,不利于管理和改动,另外一些本可以重用的样式也直接写入内联样式中了,所以样式的重用性差。但是内联也是有很大的优势的:一是速度快,由于不需要查找CSS文件和定位样式,所以执行速度是最快的;二是可以减少HTTP请求,独立的CSS文件需要另外开HTTP请求去获取,而HTTP请求又是性能优化的最重要瓶颈。外联样式的好处网上已经说得太多,可以在不改结构的情况下快速批量化更改样式,样式的重用性好等等。

  所以,小孩子才分好坏,成年人只看利弊。在WeX5中使用外联样式也是按需加载的,编写方式跟正常的html5 app开发一样的。官方建议的也是使用外联样式,降低后期维护成本。可以直接点击编辑器左下角的CSS标签进入CSS编辑器里面。这里也提供了可视化编辑(点击添加按钮)和直接键盘输入两种编写方法:

   

  个人强烈建议使用键盘直接输入,使用可视化编辑生成的样式还是比较臃肿的。写完保存之后,系统就会直接生成与w文件同名的css文件,在载入w文件的时候才会加载同名的js和css文件,实现按需加载。

总结

  WeX5 Hello World的介绍就到这里了。通过Hello World案例,我们了解了组件可视化布局、样式设置、交互事件编写这三个最基本的操作,对应的是HTML、CSS、js三大部分。其实任何一种前端的工具、框架、类库都是基于这三大部分的集合,有了这些基础之后其他的知识点还是比较好理解上手的。

时间: 2024-08-31 19:22:07

【分享】WeX5的正确打开方式(2)的相关文章

【分享】WeX5的正确打开方式(1)

    最近在研究WeX5,想在这里记录下使用过程中的点滴,今天先把之前已经掌握的分享一下. WeX5官方的开发指南难度系数较大,面向的受众可能是已经敲过上万行代码的html5 app开发者.但是作为一个刚进入代码世界的html5 app开发宝宝,本人表示拿着这份指南也找不到"南",  先抛开官方版的,下面就来看看进击版的Hello World吧. 基础部分 1.准备工作:打开hml5 app 开发工具--WeX5(路径:WeX5\studio\studio.exe),在左侧模型资源管

这才是清理微信僵尸粉的正确打开方式

本文讲的是这才是清理微信僵尸粉的正确打开方式,小盟一好基友阿光,作为一名勤劳的房产销售,靠着微信发广告.拉客户,单子从不间断.这天,他却遇到一个头疼事,微信好友达上限了! 这些个老主顾.潜在客户都是一个个挖的,衣食父母啊,微信竟要断我口粮.悲愤交加,阿光在朋友圈哭诉,"你的名片就在我眼前,我却无法添加你." 到底是5000粉儿的达人呀,两分钟后,一好友前来支招,"兄弟,你该清理下僵尸粉了,把那些早就删了你的死粉全删掉,名额不就空出来了嘛." 阿光脑海中闪过无数&qu

Win7系统摄像头正确打开方式

  在Win7系统不能再像XP系统一样在"我的电脑"里面直接打开摄像头,虽然用QQ视频的时候摄像头会自动打开,但是如果是平时需要使用摄像头怎么打开呢?下面小编就为大家介绍一下Win7系统摄像头正确打开方式. 1.打开开始菜单,右键"计算机"选择"管理". 2.在"计算机管理"窗口左边一栏,双击"设备管理器".然后,从右边栏中找到"图像设备",点开.在摄像头设备上右键鼠标,选择"

笔记本电脑小键盘的正确打开方式

  笔记本电脑小键盘的正确打开方式.笔记本电脑键盘上一般都有Fn功能键,我们按下Fn键跟F11上面的NumLK键,可能其他牌子的笔记本电脑,这个键不再F11上,像联想的机子就是F8键.以小编Acer本本来说,按下之后,会出现下图所示的样子,证明开启了小键盘. 再次按下,就是关闭小键盘功能.此时字母键功能恢复. 下图就是联想笔记本Fn键和NumLK键以及小键盘的分布情况. 当然也不是所有的笔记本都是有小键盘功能的,像联想的牌子,有些就没有,下图所示,键盘上并不支持小键盘功能.这样子,解决方法就是接

Activity的正确打开方式

本文讲的是Activity的正确打开方式, adb shell dumpsys activity 输入这个命令可以得到一个清晰的 Task 视图,比如你有多少个 Task ,哪些 activity 在其对应的 Task 等相关信息. 从图中可以看出,有两个 Task (#103, #102) . Task #103 : affinity = "cn.six.task2", size = 3 (它里面有三个activity) - Activity One - Activity Three

数字化时代,物流与零售业的正确打开方式

本文讲的是 :  数字化时代,物流与零售业的正确打开方式  ,[IT168 评论]"如果你的居住地突然入驻了亚马逊,那么这里会发生什么样的化学变化呢?" ▲Infor亚太及日本地区解决方案咨询总监 Cas Brentjens 3月21日,在Infor的媒体沟通会上,其亚太及日本地区解决方案咨询总监 Cas Brentjens给出了我们答案.Cas曾在一周前与亚马逊高级总监探讨这个问题,双方认为亚马逊入驻的市场会发生如下变化: ·品牌店路程一小时以内的地价上涨; ·周边人员工资会产生15

表白的正确打开方式 - 不想被“十动然拒”的都来学习啦

class="post_content" itemprop="articleBody"> 闽江学院男生赖国森向他心仪的蕾蕾送出了一封212天写的16万字情书,内容是回忆两人一起吃过的沙县,他将其装订成册,并取名<我不愿让你一个人吃拉面>.蕾蕾十分感动,然后拒绝了他-- 自古表白多白表,要经历多少次"十动然拒",才能学会表白的正确打开方式啊亲? 表白的正确打开方式

物联网安全的正确打开方式

越来越多的设备通过物联网相互连接,整个物联网生态系统的安全变得越来越脆弱.由于物联网网络和设备面临的网络攻击风险日益严峻,解决方案提供商更加关注安全,从而驱动着全球物联网安全解决方案的市场需求. 物联网安全 在认识到物联网的安全性之后,有三样事情是开发者必须起而施行的. 一.采用系统性的方法 系统整体的性能取决于其最薄弱的一环,而有时候窥见一斑往往并不能让我们了解全貌,有了一个弱点,整个系统都会变得脆弱.但是整个系统的安全性需要谁来负责呢? 安全性常被认为是产品开发中的最后的一个步骤,一个可以被

扫地机器人如何聪明地干活? | iRobot解读智慧家庭的正确打开方式

CNET科技行者 9月4日 北京消息(文/周雅):如今的"智能家居",已经做到了帮你从繁琐的家务事中解脱出来,但这还没达到真正意义上的智能. 反而是智能设备越来越多,越来越杂,甚至脱离不了人为手动操作...制约着智慧家庭的演进.一份埃森哲研究报告显示,24%受访者嫌弃智能设备太复杂,33%购买时会重点考虑操作简易性. 而iRobot技术副总裁Chris Jones在今年世界机器人大会直言,"智慧家庭,本质上就是一个大机器人."iRobot在做智能机器人的时候意识到,