深入理解Vue源码系列-1.从new Vue()开始说起

简介

这是一个分析vue源码的系列专栏,争取用最简单的文字,解析Vue背后的思想以及设计模式,有不懂的欢迎在下面提问。前置知识包括es6,写过一些vue的项目或者demo,会搭建vue的开发环境,具体遇到什么问题,再去解决。

开始

我们用vue-cli搭建完之后,去入口main.js里面会看到这样代码

import Vue from 'vue'
import App from './App.vue'

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app')
复制代码

这里的new Vue()就是我们的起点。我们知道new Vue()这样写,Vue就是个构造函数了,那这个构造函数在哪里呢? 我们去node_modules/vue/src/core/instance/index.js里面可以找到,找不到的看截图

打开index.js,我就直接贴源码了,这里就声明了一个Vue的函数,再执行了一些mixin函数。

import { initMixin } from './init'
import { stateMixin } from './state'
import { renderMixin } from './render'
import { eventsMixin } from './events'
import { lifecycleMixin } from './lifecycle'
import { warn } from '../util/index'

function Vue (options) {
  if (process.env.NODE_ENV !== 'production' &&
    !(this instanceof Vue)
  ) {
    warn('Vue is a constructor and should be called with the `new` keyword')
  }
  this._init(options)
}

initMixin(Vue)
stateMixin(Vue)
eventsMixin(Vue)
lifecycleMixin(Vue)
renderMixin(Vue)

export default Vue
复制代码

我们可以看到,这里就声明了一个Vue的构造函数,里面执行了一个this._init(options)方法,options就是我们前面new Vue()传的参数。接着执行一些mixin方法。最后把Vue导出来,很简单的一部分。你可能疑惑的是this._init()里面的_init方法是哪里定义的。这就涉及到们下章讲的mixin了。

总结

这里就声明一个Vue函数,执行一些mixin.最后导出。

转载于:https://juejin.im/post/5c75391af265da2deb6ab4c9

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`vue-cli-service.js` 是由 Vue CLI 创建的一个脚本文件,它是 Vue CLI 构建工具的核心部分。Vue CLI 是一个用于构建 Vue.js 应用程序的脚手架工具集,帮助开发者快速创建新项目,同时提供了一系列自动化任务,如打包、测试、服务器部署等。 在 `vue-cli-service.js` 文件中,你会看到一系列Vue CLI 功能相关的函数和模块导入,这些功能包括但不限于: - 启动开发服务器 (`serve`): 这个功能允许你启动一个热加载的开发服务器,以便在编辑代码时自动刷新浏览器视图。 - 构建生产环境应用程序 (`build`): 此功能负责将源代码打包成适用于生产环境的静态资源,优化性能并移除开发时的调试代码。 - 执行测试 (`test`): 提供了一套自动化测试框架,如 Jest 或 Mocha,帮助开发者编写和运行单元测试。 - 发布网站 (`gh-pages`): 将项目部署到 GitHub Pages 上,方便分享给他人预览或使用。 - 更新项目版本 (`update`): 自动检测和应用新版本的 VueVue CLI 的补丁更新。 - 开发模式 (`dev-server`) 和生产模式 (`prod-server`) 的支持: 分别针对开发和生产的环境提供定制化的服务。 `vue-cli-service.js` 是一个可执行脚本,可以通过在终端中输入命令 `.\\vue-cli-service.cmd` 来执行 Vue CLI 的各项任务。这使得用户能够通过简单的命令行指令来控制项目的构建流程,无需深入了解底层的脚本结构和复杂配置。 总之,`vue-cli-service.js` 是 Vue CLI 工具箱的灵魂所在,它整合了多种功能来简化前端 Web 开发过程,让开发者能够专注于构建高质量的 Vue.js 应用程序而无需过多关注基础基础设施的细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值