总是纠结在写不写随笔之间,自我感觉很菜,但是对源码爱得深沉,就写给自己看吧,希望查漏补缺,我会坚持写下去,欢迎大家指正。

我在网上看了很多人写的源码,按照依赖的方式一个一个找包,再找函数,我觉得太麻烦,复杂。所以直接看vue.js。

打开vue.js,是个自执行函数,也就是IIFE。

(function(global,factory){typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory: typeof define === 'function' && define.amd ? define(factory): (global.Vue = factory())
})(this,function(){'use strict'
})

自执行函数想必不用我多说了,让我们来分析下这种插件与框架的写法。

它的参数为global和factory,在js环境下也就是window和Vue的构造函数。this在这里值window,如果经常看源码,就会发现很多插件会判断下 typeof window !== undefined ? window : this;这种写法更偏向于在js的window全局环境中使用。

接着看对外输出factory,首先判断 module和exports存在的情况( typeof exports === 'object' && typeof module !== 'undefined'),也就是优先使用AMD(module.exports = factory),接着判断CMD是否存在(typeof define === 'function' && define.amd ),若AMD不存在而CMD存在,则使用CMD(define(factory)),若AMD,CMD都不存在,就把Vue的构造函数挂载再全局对象上(global.Vue = factory());

vue随笔一之自执行函数相关推荐

  1. vue 执行函数this_在vue中使用回调函数,this调用无效的解决

    let self = this //使用新变量替换this,以免this无效 //updatestudentinfotoserver是一个将本身部分数据异步上传的接口,接收三个参数,其中第一个是数据, ...

  2. vue子组件mounted不执行_vue 页面回退mounted函数不执行的解决方案

    前言 最近做项目碰到一个很头大的问题--从a页面跳到b页面进行编辑,编辑完再返回a页面,却没走a页面的钩子函数mounted,数据没有更新 经过一番面向百度研究,终于找到了问题所在.接下来就记录一下这 ...

  3. vue的生命周期和钩子函数的理解

    对于vue的生命周期,官方文档上并没有太多的文字性说明,把自己对生命周期和钩子函数的理解记录下来 官方文档 自己的理解 vue生命周期的概念:vue对象从被创建,到执行逻辑,最后到被销毁的过程. 具体 ...

  4. vue : 无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确, 然后再试一次 必解决技巧

    vue : 无法将"vue"项识别为 cmdlet.函数.脚本文件或可运行程序的名称.请检查名称的拼写,如果包括路径,请确保路径正确, 然后再试一次 #vue : 无法将" ...

  5. 2020-06-28 html的实现页面锁屏 + css的BFC与float + js的立即执行函数写法 + 颜色搭配

    2020-06-28 题目来源:http://www.h-camel.com/index.html [html] 实现一个页面锁屏的功能 锁屏的最终效果就是退出登录,思路是 点击锁屏按钮等操作时 使t ...

  6. vue项目中定义全局变量、函数的几种方法

    定义全局变量 原理:使用模块(.js或.vue文件)来管理全局变量,最后使用export暴露出去 (最好导出的格式为对象,方便在其他地方调用),当其它地方需要使用时,用import导入该模块 1.使用 ...

  7. js定义全局变量 vue页面_在vue项目中 实现定义全局变量 全局函数操作

    写在前面: 如题,在项目中,经常有些函数和变量是需要复用,比如说网站服务器地址,从后台拿到的:用户的登录token,用户的地址信息等,这时候就需要设置一波全局变量和全局函数,这两个设置不太难,而且有一 ...

  8. 在Vue的webpack中结合runder函数

    在Vue的webpack中结合runder函数 1.引入: <h1>下面是vue的内容:</h1><div id="app"><login ...

  9. JavaScript 立即执行函数的两种写法

    (function(str){console.log(str+'欢迎你~');})('行步至春深');(function(str) {console.log(str+'欢迎你~');}('行路易知难' ...

  10. 深入理解javascript中的立即执行函数(function(){…})()

    2019独角兽企业重金招聘Python工程师标准>>> javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各 ...

最新文章

  1. PyTorch入门学习(二):Autogard之自动求梯度
  2. Java入门—输入输出流
  3. [android] 练习样式主题自定义activity切换动画
  4. 我喜欢的设计好的网站列表
  5. 年轻人,别动不动就想搞个“大社交”,工具型社交才是正路子
  6. 数据结构链表代码_代码简介:链表数据结构如何工作
  7. 测试或运维工作过程中最常用的几个linux命令?
  8. oracle xp 安装包资源
  9. 7-2 通讯录的录入与显示 (10 分)
  10. 写给大家看的设计模式
  11. 深度强化学习之演员—评论家(Actor—Critic)
  12. 北京大学 | 软件工程理论与实践
  13. 陈吉平的Oracle职业生涯:兴趣与思考 成败之所系
  14. Tomcat7安装(jdk 1.7环境)
  15. CodeBlocks汉化
  16. please execute the cleanup command
  17. 净资产收益率与市盈率的关系
  18. 魔窗研发副总裁沈哲:移动端SDK的优化之路
  19. 006-Sencha Cmd概论
  20. 年末大盘点 2008十大最受欢迎的装机软件

热门文章

  1. PhysX3.4文档(4) --Rigid Body Overview
  2. /专访/对话堵俊平:最好的开源生态模型,是亚马逊的原始森林
  3. Git Branching基础操作学习笔记
  4. 服务器不支持ssl怎么回事,客户端和服务器不支持一般 SSL 协议版本或加密套件 解决方法...
  5. 用matlab求光谱的一阶导数二阶导数
  6. myexcel初步使用
  7. spec.ports[0].name: Required value
  8. 德国GMX Email免费邮箱服务65GB超大邮件存储空间
  9. adjacent_difference 的使用
  10. Linux系统备份及迁移到新硬盘