看vue项目体会(main.js)

默认main.js为vue入口文件

import Vue from 'vue' 
// main.js 为入口文件,并与app.vue组件向关联使此组件为跟组件 
// 是所有的内容都在app.vue 上面呈现。
import App from './App' 
// 在router里配置路由,将app组件相关联 
import router from './router' 

Vue.config.productionTip = false 

/* eslint-disable no-new */
// 生成vue的根实例;创建每个组件都会生成一个vue的实列,并且会用到根实例上面的所有属性 
new Vue({ 
	el: '#app', 
	// 声明模版
	router, 
 	template: '', 
	// 注册成组件 
	components: { App } 
})

转自vue入口文件main.js

类似import Vue from 'vue’这样的语句,解释各个引入模块是什么意思

第一句代码:

import Vue from 'vue';

其实最完整的写法是:

import Vue from "../node_modules/vue/dist/vue.js";

意思是:因为main.js是在src文件中,所以…/向前一级相对目录查找node_modules,再依次寻找后面的文件。

第二句代码:

import App from './App';

其实最完整的写法是:

import App from './App.vue';

顾名思义,这句代码的意思就是引入我们写好的.vue文件。(.vue文件是vue框架的单文件组件。)

第三句代码:

import router from './route';

其实最完整的写法是:

import router from './route.js';

顾名思义,这句代码的意思就是引入和main.js同级目录下的route.js文件。

为什么 npm 要为每个项目单独安装一遍 node_modules?

nodejs中package.json中的依赖必须每个项目都有自己的node_modules文件夹,而无法在多个项目之间共用一套node_modules。

何为依赖管理?
依赖管理说白了就是构建一个有向无环图。项目A依赖项目B,项目B依赖项目C,那么当你的项目依赖A的时候,依赖管理工具会自动让你的项目依赖B和C。
要想构建有向无环图,最关键的是要将项目转化为有向无环图中的结点。所以对于项目往往有description,作者信息,版本信息等额外信息。
依赖管理最难解决的问题就是版本问题。库A依赖库B,库C也依赖库B,但是库A跟库C所依赖的库B不是同一版本,如果库B的这两个版本兼容还好,如果不兼容就坑大发了,这是无解的问题。

下面说说Java,Python,Node三种语言中的依赖管理。

  • Java中的Maven仓库在开发者电脑上是全局的,所有项目的依赖都集中存放在本地仓库中。每个项目都有pom.xml指明依赖本地仓库中的哪些库。
  • Python中的pip跟maven很像,在开发者电脑上也是集中存放包,但是它不存在版本问题。也就是说,在你的电脑上每个python库都只有一个版本。既然如此,当你依赖某个库的时候,就无需指明版本号,直接引用包的名称就可以了。
  • Node中的依赖如果你不写package.json,那么依赖的就是全局的库;如果写了package.json,就会把所有依赖下载到node_modules文件夹。

Node这种node_modules文件夹的方式有利有弊。
最明显的坏处是:

  • 每次都需要安装依赖,费流量,网速慢时很费时间
  • 浪费磁盘空间,每个node_modules中包含的工具很多,动辄20M

最明显的好处是:

  • 使用package.json安装好之后,node_modules文件夹中没有版本信息,从而package.json可以删掉了。
  • 移动/复制/打包项目比较简单,对于开发、部署都有好处
  • 对于设计npm的人来说,这是最省事的包依赖方法。这就好比maven安装依赖之后自动将jar包安装到项目的lib里面。
  • 随意改代码。安装在node_modules里面的东西,你可以随便改,无需担心对其它项目的影响。在Java中使用maven管理项目时,如果想要定制某个库,就需要更改这个库的源代码,这时就需要把这个库的源代码复制到项目中,跟node_modules是一个道理。npm的设计者大概认为:前端都是经常修改库的源代码的。

你可能感兴趣的:(vue)