weex源码
A. weex playground源码有开源吗
发者需要自APP嵌入WeexSDK通撰写HTML/CSS/javaScript发Native级别Weex界面 Weex界面码其实段JS 像发布网页轻松部署服务端APP请求执行
B. 做混合的话Uniapp和Flutter我应该学哪个啊
王红元《Flutter从入门到实战》(高清视频)网络网盘
链接: https://pan..com/s/1DhInF6MZ0UJ1VEpRcx0uaQ
若资源有问题欢迎追问~
C. 有没有大佬做过移动跨平台框架的对比,h5 rn weex flutter,性能方面
推荐:
uni-app
uni-app是一个使用Vue.js开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/网络/头条/QQ/钉钉)等多个平台。
即使不跨端,uni-app同时也是更好的小程序开发框架。
Taro
Taro是一套遵循React语法规范的多端开发解决方案。
现如今市面上端的形态多种多样,Web、React-Native、微信小程序等各种端大行其道,当业务要求同时在不同的端都要求有所表现的时候,针对不同的端去编写多套代码的成本显然非常高,这时候只编写一套代码就能够适配到多端的能力就显得极为需要。
使用Taro,我们可以只书写一套代码,再通过Taro的编译工具,将源代码分别编译出可以在不同端(微信/网络/支付宝/字节跳动/QQ小程序、快应用、H5、React-Native 等)运行的代码。
D. 跪求,android 能指定监听事件WebSocket的库,或者其他方法
在 weex 官网中websocket 的demo 设置 监听直接给 onxxx事件 赋值就可以,
在Android死活不行,经查看android端源码(WebSocketMole)后发现android的码中onxx事件是一个方法,需要传入一个JSCallback的值,
于是,将赋值方式改为 websocket.onmessage(function onmessage(){ /* your code... */ }) ,
E. 其他行业半路转web前端,优势和不足有哪些
我是计算机专业,毕业到现在一直做前端开发四年。就我的感受来说,优势应该还是入手很快,学起来比C语言拉数据结构拉计算机系统拉算法导论相比,肯定是有意思很多。我不知道现在新人工资怎么样,我当时毕业工资不高不低,12k+十四薪和季度绩效这些基本的薪水。现在也有20k+了。
不足的话,就是很难往上晋升,其实前端只做业务的话,很少接触算法或者后台的东西,也很少有公司的高层管理是前端,小公司的话对前端也只有业务方面的要求,所以虽然上手很快,但晋升很慢,如果想往高去走,该学的还是得学。
前端这个东西吧,怎么说呢,它其实也算是在发展中的职业,大家也都还在摸索,所以你学习能力必须得跟上,今天流行这个框架,明天可能又要流行那个框架,今天你看了这个框架的源码,明天或许它就不火了,今天你用weex抢客户端工作,明天你发现weex咋这么多坑,写一行代码要兼容十行bug,前端不像java一样成熟,高层在摸索的阶段,可能有时候会提出一些不成熟的想法,底层民工程序员就要跟着高层去摸索,回头看看你觉得自己好像浪费了很多时间做了很多无用的事情。还有就是因为确实前端除了业务能做的事情很少,所以为了绩效或者别的什么,他们喜欢自己去折腾一些莫须有的东西,其实这些东西没什么用,但为了绩效以展示自己的业务水平,又不得不表现的自己在琢磨或者了解一些什么新玩意吖之类的。
说太多了,反正我这几年的感受就是这样子,希望能帮到你吧!
F. 什么是虚拟DOM如何实现一个虚拟DOM说说你的思路
虚拟 DOM ( Virtual DOM )这个概念相信大家都不陌生,从 React 到 Vue ,虚拟 DOM 为这两个框架都带来了跨平台的能力( React-Native 和 Weex )
实际上它只是一层对真实 DOM 的抽象,以 JavaScript 对象 ( VNode 节点) 作为基础的树,用对象的属性来描述节点,最终可以通过一系列操作使这棵树映射到真实环境上
在 Javascript 对象中,虚拟 DOM 表现为一个 Object 对象。并且最少包含标签名 ( tag )、属性 ( attrs ) 和子元素对象 ( children ) 三个属性,不同框架对这三个属性的名命可能会有差别
创建虚拟 DOM 就是为了更好将虚拟的节点渲染到页面视图中,所以虚拟 DOM 对象的节点与真实 DOM 的属性一一照应
在 vue 中同样使用到了虚拟 DOM 技术
定义真实 DOM
实例化 vue
观察 render 的 render ,我们能得到虚拟 DOM
通过 VNode , vue 可以对这颗抽象树进行创建节点,删除节点以及修改节点的操作, 经过 diff 算法得出一些需要修改的最小单位,再更新视图,减少了 dom 操作,提高了性能
DOM 是很慢的,其元素非常庞大,页面的性能问题,大部分都是由 DOM 操作引起的
真实的 DOM 节点,哪怕一个最简单的 div 也包含着很多属性,可以打印出来直观感受一下:
由此可见,操作 DOM 的代价仍旧是昂贵的,频繁操作还是会出现页面卡顿,影响用户的体验
举个例子:
你用传统的原生 api 或 jQuery 去操作 DOM 时,浏览器会从构建 DOM 树开始从头到尾执行一遍流程
当你在一次操作时,需要更新10个 DOM 节点,浏览器没这么智能,收到第一个更新 DOM 请求后,并不知道后续还有9次更新操作,因此会马上执行流程,最终执行10次流程
而通过 VNode ,同样更新10个 DOM 节点,虚拟 DOM 不会立即操作 DOM ,而是将这10次更新的 diff 内容保存到本地的一个 js 对象中,最终将这个 js 对象一次性 attach 到 DOM 树上,避免大量的无谓计算
首先可以看看 vue 中 VNode 的结构
源码位置:src/core/vdom/vnode.js
这里对 VNode 进行稍微的说明:
vue 是通过 createElement 生成 VNode
源码位置:src/core/vdom/create-element.js
上面可以看到 createElement 方法实际上是对 _createElement 方法的封装,对参数的传入进行了判断
可以看到 _createElement 接收5个参数:
根据 normalizationType 的类型, children 会有不同的定义
simpleNormalizeChildren 方法调用场景是 render 函数是编译生成的
normalizeChildren 方法调用场景分为下面两种:
无论是 simpleNormalizeChildren 还是 normalizeChildren 都是对 children 进行规范(使 children 变成了一个类型为 VNode 的 Array ),这里就不展开说了
规范化 children 的源码位置在:src/core/vdom/helpers/normalzie-children.js
在规范化 children 后,就去创建 VNode
createComponent 同样是创建 VNode
源码位置:src/core/vdom/create-component.js
稍微提下 createComponent 生成 VNode 的三个关键流程:
createElement 创建 VNode 的过程,每个 VNode 有 children , children 每个元素也是一个 VNode ,这样就形成了一个虚拟树结构,用于描述真实的 DOM 树结构
G. weex playground源码有开源吗
开发者只需要在自己的APP中嵌入Weex的SDK,就可以通过撰写HTML/CSS/JavaScript来开发Native级别的Weex界面。 Weex界面的生成码其实就是一段很小的JS 可以像发布网页一样轻松部署在服务端,然后在APP中请求执行。
H. 微信小程序是用什么技术实现的
微信小程序是原生应用,是 React Native 和 Weex 类似的模式。微信小程序的生态除了官方提供的组件和API,几乎没有其他的组件。
I. 如何减小weex.js的大小
建议:webpack.config.js中对entry进行配置,拆分多个入口,有利于移动端。我们现在就是这么干的:拆分后保持在50k以内,渲染效果还是不错的。如果再加上压缩,效果会更好点。
entry: {
app: path.resolve('./src/entry/app.js'),
start: path.resolve('./src/entry/start.js'),
takeleave: path.resolve('./src/entry/takeleave.js'),
myleave: path.resolve('./src/entry/myleave.js'),
detail: path.resolve('./src/entry/detail.js'),
about: path.resolve('./src/entry/about.js')
}
再者就是在weex层面源码上的优化了,这块估计比较困难。