侧边栏壁纸
博主头像
云之彼端博主等级

行动起来,活在当下

  • 累计撰写 27 篇文章
  • 累计创建 6 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

vue从0实现(1) —— 开发环境搭建

Administrator
2022-12-10 / 0 评论 / 0 点赞 / 68 阅读 / 4615 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-12-26,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

此系列文章用于记录vue2的简单实现过程,用于检验自己对库创作及vue原理的理解

本系列文章的目的是模仿vue实现一个支持双向绑定的js库,本篇简单介绍开发环境的搭建:rollup打包工具的介绍、配置及使用

rollup

Rollup 是一种打包 JavaScript 模块的工具。它可以将多个 JavaScript 文件打包成一个文件,从而减小文件大小并提高加载速度。Rollup 主要用于将 JavaScript 模块打包成可以在浏览器中运行的代码,但它也可以用于打包其他类型的文件,如 TypeScript 和 CoffeeScript。它使用了 ES2015 模块系统的语法,并且支持常用的模块打包工具,如 Webpack 和 Browserify。

rollup的安装

首先实现使用npm包管理工具初始化一个项目

npm init -y

然后安装rollup,rollup只参与项目的打包工作,因此安装为开发依赖

npm install rollup -D

我准备使用 es6 语法进行库的开发,因此需要安装babel来进行代码的降级获得更好的兼容性

npm install rollup-plugin-babel @babel/core @babel/preset-env -D

其中:

  • rollup-plugin-babel 是一个 Rollup 插件,用于将 Babel 与 Rollup 集成在一起。它允许在使用 Rollup 打包模块时使用 Babel 进行代码转换。例如,可以使用 @babel/preset-env 预设选项来转换 JavaScript 代码,以便在旧版浏览器中运行。rollup-plugin-babel 还可以使用其他 Babel 插件,如 @babel/plugin-transform-runtime,来解决 Babel 转换时常见的问题。使用 rollup-plugin-babel 可以更方便地将 Babel 的强大功能与 Rollup 的模块打包能力结合起来,从而提高项目的开发效率。

  • @babel/core 是 Babel 的核心模块,它包含了 Babel 的所有基础功能。它提供了一个 JavaScript API,用于将 JavaScript 代码从一个版本转换为另一个版本。@babel/core 与 @babel/preset-env 配合使用可以轻松实现自动转换 JavaScript 代码的目的。@babel/core 还可以与其他 Babel 插件配合使用,比如 @babel/plugin-transform-runtime,来支持更多的语言特性和解决常见的问题。

  • @babel/preset-env 是 Babel 中一个预设选项,它可以根据指定的目标浏览器或运行时环境来自动将 JavaScript 代码转换为向后兼容的版本。这个预设包含了所有主要的 ECMAScript 版本和特性,因此可以让开发人员使用最新的 JavaScript 特性,而无需担心它们是否在目标浏览器或运行环境中支持。使用 @babel/preset-env 可以大大简化 Babel 的配置,同时也可以自动选择只包含需要的转换插件,从而减小打包文件的大小。

rollup的配置

官方文档
在项目的根目录下新建一个rollup.config.js用于编写rollup的配置文件,并添加如下配置:

import babel from "rollup-plugin-babel";
export default {
  input: "./src/index.js", //打包入口文件
  output: {
    file: ".dist/vue.js", //打包输出
    name: "Vue", //global.Vue 挂载在全局对象上的名称
    format: "umd", //输出umd模块
    sourcemap: true, //生成sourcemap 希望可以调试源代码
  },
  plugins: [
    babel({
      exclude: "node_modules/**", //排除node_modules所有文件
    }),
  ],
};

测试代码

在项目根目录下新建src/index.js,并编写如下内容:

export default a = 1;

在package.json中生成添加打包脚本:

{
  "name": "vue",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "rollup -cw"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.20.5",
    "@babel/preset-env": "^7.20.2",
    "rollup": "^2.79.1",
    "rollup-plugin-babel": "^4.4.0"
  }
}

打包源代码

rollup -cw 使用rollup.config.js进行的配置进行打包,并监听文件的变更自动进行dist输出的更新

执行 dev 脚本

npm run dev
rollup v2.79.1
bundles ./src/index.js → .dist/vue.js...
created .dist/vue.js in 467ms

[2022-12-10 12:29:12] waiting for changes...

rollup 帮我们完成了文件的打包并开始监听源代码的变化
dist目录下生成了名为vue.js的文件及对应的map文件

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

	var index = a = 1;

	return index;

}));
//# sourceMappingURL=vue.js.map
0

评论区