- 起源
- 重构 (2.0 API保持向后兼容,渲染层重写)
- Just a view layer library
- 渐进式框架(框架内容分层,插件系统)
- 社区项目活跃
- 又吹了一波Anders帮Vue写非Class下this类型推导 2333
- 服务端渲染 & 代码分割 (ssr.vuejs.org)
- VUE1 & VUE2 区别, VUE2 以组件为边界创建watcher
- Code Name: K??
- 更好的 TypeScript 整合
- SSR性能进一步优化
通过编译时优化获得2-8x性能提升
- SSR + Webpack Code Split (不再局限路由)
- VUE CLI升级
配置依赖化 + 可组合
PWA by default
一个模板 不同参数 (--ts, --ssr)
- 单文件组件的CSS改进
- 基于Proxy的响应式系统重构
不再需要Object.defineProperty
Lazy observation
显式构建响应式对象
- HTML component
Vue本身是前端框架,它目前跟服务器唯一的关联就是SSR,基于Stream的Bigpipe实现,虽说是旧瓶装新酒,但还是有很多人不了解其中原理。另外对于Vue项目来说,与后端Api对接、(Spa、大首页)等有没有更好的实践呢?后端Api目前也极为混乱,各种语言、各种实现,真的适合前端么?大家辛苦了,狼叔最懂你。
- 讲解Vue SSR原理
- 分析Node.js现状,以及2017年趋势预测
- 举例大首页常见做法,引出Api层诸多思考
- API Proxy层深度实践
- Vue 与 API Proxy如何完美组合
- 前端和Node之间的边界其实已经比较模糊了
- 跨平台 (Hybird、PC、移动、Web端),应用分发渠道丰富
- 异步IO 与 并发
- 作为工具链的补充
- 分析Node现状
- Vue的SSR
- API Proxy整合
- Promise
- Generator
- Async / Await
吐槽:扯了一些Await的缺点,然后2017年了居然不提Rxjs ?
- PWA
- SSR
- API Proxy
- Isomorphic
吐槽: 就PWA还算未来,别的都老调重提了
- bundle render
- streaming / BigPipe
- cache
- 内置service-worker
- Transfer-Encoding: chunked
- Pagelet
- 渐进式前端渲染 (结合墓碑系统,风味更好)
P.S.: 微博在2011年对PC端进行了BigPipe改造,以至于多年以后,PC端都只需要1个前端来维护
- 编译缓存
- LRU
- 越来越后端
- 模糊前后端边界
- 全栈是个好词
Mmmm:全栈这个词其实可攻可受
- 一个页面API非常多
- 跨部门
- 跨域
- API返回的数据对前端不友好
- 需求决定API,但API有可能是不及时的
- 详情请见 淘宝13年推出的Midway,支付宝推出的Chairs等项目
- 记录Request / Response
- 对Response做api反向检查
吐槽:这事儿基于各种CI、集成、回归不都可以避免吗?
作为多个前端流行框架(Polymer、Angular1和Angular2、React以及Riot等)的深度研究和应用定制开发者,本分享更多期望从工程化和工具方向的对比思考,来带大家一起深入地看一下它在Vue.js的优雅设计。
- Vue在工程化方案带给我们的思考
- Vue-loader的设计实现思考
- 如何用工具来管理Vue.js的组件开发生态
- rollup在Vue.js的应用
- Flow在Vue.js的应用同时也对比Angular2选择ts来编写的一些思考
- Web Components方向的框架是如何利用工具来进行合并和依赖管理的
- 通过工具和脚本代码来支持异步和动态组件注册和载入区别和实战思考
- Vue.js 比 jQuery 好学吗
DOM manipulation VS Template declaration
- Vue工程化工具的演进
yo
vue-cli
- 接下来半小时
讲师带我们领略了webpack & webapck plugins & babel & eslint....,然而和vue基本没什么关系。
本来我觉得我们工程化做的还不够,但看完这个演讲后,我觉得我们工程化做的比95%的公司要好
- 掘金的 Web 端产品架构
- 2.0 升级重构中的实践问题
- 后端渲染、组建资源 CDN 部署
- 期待 Vue.js 的功能和一些实践思考
- 重构历史 REFACTORY HISTORY
- 架构设计 ARCHITECTURE
- 最佳实践 BEST PRATICE
1st refactoring
- 组件化
- vue-loader & webpack
- 自定义filter
- 分页 director (还不是router分页)
2nd Refactoring Vue 1.0
- 使用vue-router
- 分隔前后端webpack
- 组件化增加了一个非官方的状态管理(自己实现的)
3nd Refactoring
- Vuex 状态管理
- 重构了大多数组件的数据传递
4th Refactoring - Vue 2.0
- 重新管理了文件结构
- 清理了业务架构
- 完全抽象了CRUD操作
- 完全接入了SSR
- 完全重写了webpack / server的配置
- 业务复杂度
30页面
40个组件
富文本 / md编辑器
组合页面的无限下拉刷新
后端渲染
CDN加速
many other components
- 各种开发环境
staging
dev
test
...
- DDD - Domain Driven Design
Martin Flow
- 基础业务层
- Utils层
- 领域层
e.g.: User 认证就是典型的一个领域
- 业务层
- Event Bus 事件总线
- business 业务逻辑
- components 业务组件
- asserts 资源
- constant 常量
- event-bus 全局事件管理
- global 对vue的一些基础拓展定义、函数
- model 数据层的抽象
- repository 数据IO
- router 路由
- state vuex
- style 样式
- view 视图
- Model 对数据的抽象
- Repository 获取数据的业务
- Service 各个domain下基础业务函数
- 不通过跳转URL来显示 Not Found
订阅vue-router,等同于路由统配,并且定义一个error modules来显示具体的404 页面信息
- Vue现有的SSR在掘金这个级别(10k+?)就不能用了,机器性能榨干
所以:
- 做了所有能做的缓存
- 做了数据缓存
- 各种LRU
- 做了页面缓存 (6min redis page content cache)
- Event Sourcing 事件溯源
- 复杂状态的应用尝试用事件来解耦数据的一致性 (但这点实际上我有存疑)
饿了么内部从 Vue 的 1.0 版本就开始在尝试,发展至今几乎所有的前端项目都是基于 Vue 开发。饿了么前端团队结合实际业务场景,在一年多的探索过程中做了一些基于 Vue 的基础工具的开发以及前端服务化的尝试。并且还在新技术上(例如 PWA 和 Weex)积极探索,总结了一些实践经验。
- 基础工具开发心得
- 基于 Vue 的前端服务化尝试
- PWA
- Weex 的实践
- 基础组件的开发,业务组件的开发
- PWA
- Weex的尝试
- 用Vue做前端服务化
- 面向公司内的业务组件 (初稿)
- 面向开源的基础组件 (二稿)
- 易用
多种编译版本 (UMD\COMMONJS\SINGLE COMPONENT)
- 可定制化 (国际化\定制主题)
内部直接实现i18n变量替换
vue-i18n
- 与生态兼容
- 别的工作
单元测试
项目模板
组件\特性的添加
- 对会场页面,提供一个可视化的编辑器
- 对banner设计师提供模板,运营对图片进行修饰
- 由前端将业务组件封装成插件的形式,内嵌至编辑器
- 动态渲染业务组件
- 饿了么 @ 发现页面
交互少
访问量大
- 加载速度提升明显,页面秒开
- iOS上表现优异 加载+rendering 不到0.5s
缺点:
- 三端体验不一致,特别是对HTML5支持不完整
- 没有cookies
- 没有热更新 (这是题老师提的吧?)
- 对富交互支持有限
- 尝试优化ELEME webApp
- 做好性能监控
- 做好降级方案
- 最后做业务改造
- 首屏渲染现在不到0.5s,相比之前,首屏会有白屏时间
- ele.me改造PWA还上了Google.io 成为官方实例
本主题主要讲解:
- Weex与Web应用开发的技术差异,如跨平台框架的内存问题、DOM、BOM、API组件差异等等
- Weex与Vue 2.0开发架构
- Weex工具与文档
- HTML5 下个月就已经ready
- 动画也得到了增强
- Weex 核心团队有13个人 (前端3个)
- .we file
- compiled to bundle js
- weex js framework parsing and eval
- call target platform directive
- generate weex page
- 解析Bundle
eval
new Function
native new Function (High performance, android\v8 only)
- MVVM
内容映射到内存模型
渲染方式 append tree or node,精细化的控制节点操作
- Native 通信
MVVM -> 任务中心 -> Native
- MVVM直接包裹了vue.2.0 core,2.0语法强兼容性
- 不过与web 版的vue2.0 依然有以下区别
没有DOM
只支持部分的事件类型
支持了事件冒泡
默认采用Flexbox布局
默认所有样式都是scoped
不能为元素设置背景图
没有默认滚动
和原生元素有单位上的不对称
- native内存 - jscore内存 - jsframework内存 (bundle file)
- 反正说了半天就是记得在weex页面destory时,干掉全局上自己额外添加的引用,因为Global对象直接被native内存持有,不可被释放
- 重构IDE的技术演化过程
- vuex是如何来管理整个IDE组件之间的通信和扩展管理IDE插件
- 具体插件出发,分析基于Vue,vuex,ES5/ES6的插件系统为什么会如此简单而强大
- 最后聊聊Vue可以做得更好的地方和IDE优先服务好Vue/weex生态
- IDE架构演化
- plugin的新玩法
- 对vue的期待
- VIDE展望
- 组件模块化
- 组件之间能通信
- 能提供事件,第三方可以接受事件
- 无法全局的查看全部状态
- 事件消息太多,维护太难
- 集成多个状态,大麻烦
- 太多状态事件和逻辑混合在一起
解决方案:
用 Vuex
- computed data + vuex = 响应式渲染
总结:
人生苦短,我用VS CODE