html标签
  • weex中没有标签的概念,html中标签对应于weex中的Components

  • weex 无<span> 、<p> ,用<text>替代。但是<text>内部不能嵌入组件

  • 在HTML中通常使用的 <img> 标签在 Weex 中不支持,应该使用<image>

  • 内容部分有滚动效果,使用<scroller>。使用css的overflow属性不能让内容滚动。

css语法
  • Weex 中只支持单个类名选择器,不支持关系选择器,也不支持属性选择器。

  • 样式默认是 scoped,即组件级别作用域。

  • 视窗的宽度是750px(width=device-width),设计稿给出的是375px,故写css px 的时候要用2倍

  • 布局,使用flexbox 布局

  • box-shadow 安卓不支持, 目前官方最新的weex版本支持,需客户端sdk升级

  • iOS 如果写外部阴影,ios 要加上一个background。

    box-shadow: 0px 0px 6px #cccccc;
    background: #ffffff;
  • native, DOM设置position: absolute时, 不支持top、 left百分比, 要用px 写死。

  • 支持自定义font-family, 但是不支持自提文件放在服务器端,一般放在客户端本地。

    把字体文件放在native的时候,注意下路径,本地资源都采用'local:// '的方式加载,但是android需要加一个path,这个path随便填,如rpd。
  • 不支持z-index, 如果想要层级(如蒙层),请用position: absolute, 把你想要层级高的dom元素放在后边

  • 不支持css动画,要动画效果使用内建组件animation, 具体见https://weex-project.io/cn/references/modules/animation.html

  • border不支持简写。style、width、color只能分开写

关于DOM和BOM
  • weex环境中没有DOM,weex在native解析的html得到的是原生布局数

  • weex没有BOM,但是可以使用移动设备原生 API(即Modules),通过注册、调用模块来实现。

    例如const storage = weex.requireModule('storage');

vue语法
  • 事件修饰符 .prevent, .capture, .stop, .self在native不支持。键盘事件修饰符.enter, .tab, .ctrl, .shift同样在native也不支持。

  • 指令不支持 v-html 、v-show、v-clock

  • options 不支持comments

  • 实例方法不支持vm.$mount()

  • 内置组件不支持transition

  • 生命周期不支持activateddeactivated

  • 使用组件,直接绑定click.native ,在web端会触发两次,用事件传递(事件名称避免使用原生事件名称),可避免。

  • 组件事件传递,最好不要和原生事件冲突。比如子组件this.$emit('click'),在web端 父组件@click会响应两次,native却没有这个问题。

  • :class="['verifyitem--' + verifyStatus]”, class 写法不支持vue object的写法,只支持数组式的写法 , 而且只能写一个自定义的类。 由于 Weex 在 native 上的渲染机制,从类名中取样式会是一个高频操作,简化,具体见<https://github.com/alibaba/weex/issues/2303

  • input and switch 组件不支持 click事件,使用change or input 替代。

  • 不支持 document 和其他各种 DOM API。

  • 没有 windowscreenhistorylocationnavigator 等变量。

  • 关于蒙层, 安卓点透问题解决办法:e.preventDefault && e.preventDefault();

配置
  • 页面

src/entry.js 执行的始端,相当于项目模版中的index.js

src/views/a.js 页面a的配置,指定title和页面入口

src/entries/a/ 页面, 相当于项目模版中的src/webview/a

  • 代码在web端运行,需要依赖weex-vue-render(web端的vue DSL)。
  • 解析.vue文件需要的loader,native端需要 weex-loader , web端需要Webpack + vue-loader
调试
  • 本地运行的时候需要同时执行npm run dev 和 npm run serve

  • ios调试小工具->Week DebugTool->扫描二维码

    安卓调试小工具->功能->扫码

动态更新机制

目前,打开的weex页面的时候会向服务器请求js bundle,但是本次渲染的是本地的js bundle,要等到第二次打开才会渲染最新的。

这个更新机制不太友好,做不到h5的动态性。

其他
  • 区分端 weex.config.env.platform = web/iOS/android

  • 通过this.$route.push('/**') 打开另外一个weex页面,回到上一个页面的事件使用viewappear。具体见https://weex.apache.org/cn/references/common-event.html#Page-事件

  • ajax请求,如果是native端, 避免跨域

  • svg-icon 如果碰到显示不全,请用图片替代

一些参考的资料

weex h5开发区别-实践初级篇的更多相关文章

  1. 使用Asp.Net Core MVC 开发项目实践[第一篇:项目结构说明]

    先从下图看整体项目结构: Mango.Manager: 为后台管理项目 Mango.Web: 为前台项目 Mango.Framework.Core: 为常用的基础操作类项目 Mango.Framewo ...

  2. vivo浏览器的快速开发平台实践-总览篇

    一.什么是快速开发平台 快速开发平台,顾名思义就是可以使得开发更为快速的开发平台,是提高团队开发效率的生产力工具.近一两年,国内很多公司越来越注重研发效能的度量和提升,基于软件开发的特点,覆盖管理和优 ...

  3. 使用Asp.Net Core MVC 开发项目实践[第二篇:EF Core]

    在项目中使用EF Core还是比较容易的,在这里我们使用的版本是EF Core 2.2. 1.使用nuget获取EF Core包 这个示例项目使用的是SQLSERVER,所以还需要下载Microsof ...

  4. ABP框架实践基础篇之开发UI层

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 说明 其实最开始写的,就是这个ABP框架实践基础篇.在写这篇博客之前,又回头复习了一下ABP框架的理论,如果你还没学习,请查看AB ...

  5. Python开发【第七篇】:面向对象 和 python面向对象(初级篇)(上)

    Python 面向对象(初级篇)   51CTO同步发布地址:http://3060674.blog.51cto.com/3050674/1689163 概述 面向过程:根据业务逻辑从上到下写垒代码 ...

  6. 【转帖】H5 手机 App 开发入门:概念篇

    H5 手机 App 开发入门:概念篇 http://www.ruanyifeng.com/blog/2019/12/hybrid-app-concepts.html 作者: 阮一峰 日期: 2019年 ...

  7. Hadoop MapReduce开发最佳实践(上篇)

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  8. 零基础学习hadoop到上手工作线路指导初级篇:hive及mapreduce

      此篇是在零基础学习hadoop到上手工作线路指导(初级篇)的基础,一个继续总结.五一假期:在写点内容,也算是总结.上面我们会了基本的编程,我们需要对hadoop有一个更深的理解:hadoop分为h ...

  9. Python开发【第七篇】:面向对象 和 python面向对象进阶篇(下)

    Python开发[第七篇]:面向对象   详见:<Python之路[第五篇]:面向对象及相关> python 面向对象(进阶篇)   上一篇<Python 面向对象(初级篇)> ...

随机推荐

  1. 性能测试Jmeter压测ZooKeeper-自定义java请求

     要想通过自定义java请求来压测ZooKeeper,那么我们就需要做两件事情,第一我们需要知道java如何操作ZooKeeper,第二就是怎么能将我们写的jar包让jmeter识别,首先我们先来干第 ...

  2. Anatomy of a Database System学习笔记 - 公共模块、结语

    公共模块 1. 使用基于上下文的内存分配器进行内存分配 除了教材里常提到的buffer pool,数据库还会为其他任务分配大量内存,例如,Selinger-style查询优化需要动态的规划查询:has ...

  3. sublime编译javaScript脚本

    处理步骤: 1. 首先到 nodejs.org 下载 Node.js 安装包并安装.2. 打开 Sublime Text 3 编辑器.选择菜单 Tools --> Build System -- ...

  4. loadrunner-参数化

    参数化的目的: 1.数据库或应用程序对提交请求里的参数值进行唯一性校验 2.为了避免查询缓存导致的性能测试结果失真 (语法检查-语意检查-检查缓存(有直接从数据库给)没有就生成执行计划-按照执行计划去 ...

  5. 远程git仓库的搭建

    具体的操作见另一篇 第一部分: 安装 1. 下载地址:  https://git-scm.com/download/win; 如果速度慢, 使用 迅雷下载; 2. 点击安装, 然后下一步, 直到下面这 ...

  6. git版本冲突解决

    1. 使用git log命令查看所有的历史版本,获取某个历史版本的id,假设查到历史版本的id是139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96. git log 2. ...

  7. Webpack 使用url-loader和file-loader打包资源文件

    在js中不仅可以通过import引入js文件,还可以引入图片.视频等资源文件,这样webpack打包时就会把所引入的资源文件也一起打包进来 打包进来的文件会返回一个字符串:即文件的路径 要做到这一点, ...

  8. Unity4.3.4 安装出现 pattern not found

    第一次破解不成功,第二次破解的时候就会出现这个错误 删除C:\ProgramData\Unity里面文件后,再重启后点击Manual Activation,出现的对话框是是保存当前序列号?重新加载序列 ...

  9. html页面转jsp后 乱码问题。

    在jsp文件中的html显示乱码是因为服务端和客户端的编码不一致导致的.如果Java和JSP编译成class文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码.解决办法:1.未指定使用字符集 ...

  10. JQuery+formValidator实现表单验证

    <!-- 需求: 用户注册页面要有用户名.密码.确认密码.邮箱 用户名文本框:用户名不能为空,且必须为数字与字母的6到12位的组合 密码框:密码不能为空,最少6位,包括至少1个大写字母,1个小写 ...