了解vue的构建,可以从package.json文件开始
sprits命令内关于构建的命令如下
{
...
"build": "node scripts/build.js”, // web版本
// sever
"build:ssr": "npm run build -- web-runtime-cjs,web-server-renderer”,
// weex
"build:weex": "npm run build -- weex”
…
}
从命令看出:
vue是通过rollup来进行构建的
同样的构建工具webpack更强大一些,可以处理图片、 css、js等;但是rollup只做js的处理,相比之下更轻量, 所以rollup更适合js框架的打包
总共有三个版本的构建
从web版本的为起点来了解,Web版本的构建命令实际执行的是scripts/build.js
build文件的整个核心内容是build方法
let builds = require('./config').getAllBuilds()
if (process.argv[2]) {
const filters = process.argv[2].split(',')
builds = builds.filter(b => {
return filters.some(f => b.output.file.indexOf(f) > -1 || b._name.indexOf(f) > -1)
})
} else {
//. 如果没有参数就把weex给过滤掉
builds = builds.filter(b => {
return b.output.file.indexOf('weex') === -1
})
}
build(builds)
得到的整个的构建流程是:
读取./config 配置文件中的配置,再根据命令行中输入的参数
exports.getAllBuilds = () => Object.keys(builds).map(genConfig)
// Object.keys(builds) 对象key的数组: 对应val的是不同版本的编译配置
// genConfig 配置rollup构建的参数格式
其中getAllBuilds方法返回的是一个对象数组
去到这些配置中进行过滤,拿到对应的版本编译所需要的config, 传入到buildEntry方法去执行rollup编译
rollup在.then内执行输出的文件地址,以及代码压缩配置
其中config里的format 构建格式
最后config文件最后导出的是遵循rollup构建规则的所需要的数组对象
中的别名配置暂不做分析,具体代码在scripts/alias中
补充: 在我们常用的web版Vue中,又区分了两种独立构建和运行时构建
两者直接的使用差别
Runtime Only 运行时构建,不包含模板编译器,借助vue-loader将.vue文件编译成js
优点: 代码体积轻量
缺点: 运行时需要借助vue-loader,把template模版编译成render函数
new Vue({
render (h) {
return h('div', this.hi)
}
})
Runtime+Compiler 包含模板编译器
优点: 动态把模版编译成render函数
缺点: 体积大,对性能有损耗
new Vue({
template: '<div>{{ hi }}</div>'
})
接下来我们会详细分析下如何完成由多个组件组成一个复用组件的开发流程。本节我们主要要完成这样一个列表功能,每一行的列表是一个组件,列表内可能出现按钮组件或者箭头组件,点击按钮组件可以自定义事件
JavaScript运行三部曲:语法分析、预编译、解释执行。语法分析很简单,就是引擎检查你的代码有没有什么低级的语法错误; 解释执行顾名思义便是执行代码了; 预编译简单理解就是在内存中开辟一些空间,存放一些变量与函数 ;
开发准备:了解产品和设计,提出疑问和见解,技术调研和培训,预算人力和时间。开发过程:职责任务,页面开发,提取剥离
前端开发经常会遇到这样的情况,项目经理莫名奇妙发了个会议邀请,然后一股脑把产品下阶段的需求讲完,开发听得云里雾里,心里吐槽一堆细节产品自己没理清,居然在这问前端要多久
我相信很多前端初学者一开始都会被执行上下文这个概念弄晕,或者说似懂非懂。对于工作两年的我来说,说来实在惭愧,虽然知道它大概是什么,但总觉得没有一个更为清晰的认识(无法把它的工作过程描述清楚)
流程控制作用:控制代码的执行顺序;分类:(1) 顺序结构:从上到下依次执行代码语句(2) 分支/选择结构;if语句简单if结构,注意 : 除零值以外,其他值都为真,以下条件为假值false
事件流程分为三个阶段:捕获阶段、目标阶段、冒泡阶段。dom2级事件可以重复绑定,在高级浏览器中的执行顺序是从上至下。在ie8以下浏览器中是倒叙执行,但是当attachEvent和dom0级一起执行时
JS 程序的入口,将当前 APP 对象注册到 AppRegistry 组件中, AppRegistry 组件是 js module;我们新建一个RN的项目,在原生代码中会生成 MainActivity 和 MainApplication 两个 Java 类。顾名思义
在运维过程中,网站部署是运维的工作之一。传统的网站部署的流程大致分为:需求分析 --> 原型设计 --> 开发代码 --> 提交代码 --> 内网部署 --> 内网测试 --> 确认上线 --> 备份数据 --> 外网更新 --> 外网测试 --> 发布完成
OAuth 2.0 标准的 RFC 比较难读懂,本文尽量把认证流程说明白。假设我们的网站有一个功能是同步用户在 Github 的所有仓库。对接 OAuth 流程大致分为 5 个步骤:
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!