发布npm包完整指南📋 准备工作
注册npm账号 - npm官网 注册
安装nrm - npm install -g nrm (管理npm源)
源码跟打包后的包分离 - dist => npm; src => github
准备Git仓库 - GitHub/GitLab等代码托管平台
测试验证功能 - jest
打包工具 - 一般这种功能包用rollup
🚀 完整发布流程1. 创建项目并关联Git123456789101112# 创建项目mkdir my-packagecd my-package# 初始化gitgit initgit add .git commit -m "Initial commit"# 关联远程仓库git remote add origin https://github.com/username/my-package.gitgit push -u origin main
2. 初始化npm包1npm init -y
3. 配置package.json12345678910111213141516 ...
文件操作相关1. Blob、File、Base64 概述1.1 Blob 对象Blob(Binary Large Object) 是浏览器提供的一个原生对象,用于表示不可变的、原始数据的类文件对象。
二进制数据本质:在计算机中,所有数据最终都以二进制形式存储和传输:
文本文件:每个字符对应一个或多个字节的二进制编码
图片文件:像素数据以二进制格式存储
音频/视频:采样数据以二进制格式存储
程序文件:机器码以二进制格式存储
Blob 的作用:Blob 对象是浏览器中表示原始二进制数据的标准方式,它:
封装二进制数据:将底层的字节序列包装成高级对象
提供统一接口:无论数据来源如何,都提供相同的操作方式
支持流式处理:可以分片读取和处理大文件
特点:
不可变性:一旦创建,内容无法修改
原始数据:直接存储二进制字节,不进行任何编码转换
类文件对象:具有类似文件的结构,但没有文件名等元信息
内存效率:直接操作二进制数据,避免不必要的编码转换
创建方式:12345678// 1. 从字符串创建const blob1 = new Blob(['Hello World ...
什么是 GitHub Actions
定义: GitHub 内置的自动化工作流平台,支持 CI(持续集成)/CD(持续部署)。
组成:
workflow(工作流程): 持续集成一次运行的过程,就是一个 workflow(.github/workflows 下的 yml 文件)
job(任务): 一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。
step(步骤): 每个 job 由多个 step 构成,一步步完成。
action(动作): 每个 step 可以依次执行一个或多个命令(action)。
基本结构1234567891011121314151617181920212223242526272829303132333435# name字段是 workflow 的名称。如果省略该字段,默认为当前 workflow 的文件名。name: My Workflow# on字段指定触发 workflow 的条件,通常是某些事件。上面代码指定,push事件触发 workflow。# on字段也可以是事件的数组。on字段也可以 ...
RESTful API 基本概念REST(Representational State Transfer)是一种软件架构风格,用于设计网络应用程序的API。
什么是 RESTful API• RESTful API 是基于 REST 架构风格设计的 Web API• 使用 HTTP 协议的标准方法(GET、POST、PUT、DELETE等)• 通过 URL 和 HTTP 方法来表示资源和操作• 无状态、可缓存、统一接口的设计原则
• REST 的核心思想:
资源(Resource):网络上的任何信息都可以被视为资源
表现层(Representation):资源的具体表现形式(JSON、XML等)
状态转移(State Transfer):通过HTTP方法改变资源状态
RESTful API 设计原则1. 资源识别 (Resource Identification)概念:每个资源都应该有一个唯一的标识符(URI),通过URI可以访问和操作资源。
语法规则:
使用名词而不是动词:/users 而不是 /getUsers
使用复数形式:/users 而不是 /user
使用层级结构:/ ...
Node.js基本概念Node.js是一个基于Chrome V8 JavaScript引擎的JavaScript运行时环境,让JavaScript可以在服务器端运行。
为什么要使用Node.js• 单线程事件循环:Node.js采用单线程事件循环模型,避免了多线程的复杂性• 非阻塞I/O:异步I/O操作不会阻塞主线程,提高并发性能• 跨平台:可以在Windows、macOS、Linux等操作系统上运行• 丰富的生态系统:npm包管理器提供了大量的第三方模块• 前后端统一:使用相同的JavaScript语言开发前后端
• 高性能:基于V8引擎,执行速度快• 实时应用:适合构建实时应用,如聊天室、游戏服务器• 微服务架构:轻量级,适合构建微服务
Node.js基础1. 模块系统概念:Node.js使用CommonJS模块系统,每个文件都是一个模块,可以通过require()导入和module.exports导出。
语法规则:
导入模块:const 模块名 = require('模块路径')
导出模块:module.exports = 值 或 expor ...
安装1npm install postcss-pxtorem
设置根目录 postcss.config.js
123456789101112module.exports = { plugins: { // 自适应,px>rem转换 'postcss-pxtorem': { rootValue: 37.5, // 75表示750设计稿,37.5表示375设计稿 propList: ['*', '!border-bottom'], // 需要转换的属性列表,'*'表示所有属性 selectorBlackList: ['.ignore'], // 忽略的选择器 minPixelValue: 2, // 小于或等于该值的像素不转换 mediaQuery: false, // 是否特换体查询中的 px }, },};
Git_丢弃工作区跟暂存区的修改丢弃工作区的修改 / git restore🚨 永久丢弃修改,无法恢复, 谨慎使用
丢弃单个文件的修改
1git restore <file_path>
示例:
1git restore src/permission.js
丢弃多个文件的修改
1git restore <file_path1> <file_path2>
示例:
1git restore src/permission.js src/router.js
丢弃所有文件的修改
1git restore .
丢弃暂存区的修改 / git restore –staged🚨 将暂存区的文件移回工作区,保留工作区的修改
取消暂存单个文件
1git restore --staged <file_path>
示例:
1git restore --staged src/permission.js
取消暂存多个文件
1git restore --staged <file_path1> <file_path2&g ...
TypeScript
未读TS基本概念TS,是 JavaScript 的超集
为什么要 TS• 从编程语言的动静来区分,TypeScript 属于静态类型的编程语言,JavaScript 属于动态类型的编程语言• 静态类型:编译期做类型检查• 动态类型:执行期做类型检查
• 代码编译和代码执行的顺序:1 编译 2 执行• 对于 JS 来说:需要等到代码真正去执行的时候才能发现错误(晚)• 对于 TS 来说:在代码编译的时候(代码执行前)就可以发现错误(早)
并且,配合 VSCode 等开发工具,TS 可以提前到在编写代码的同时就发现代码中的错误,减少找 Bug、改 Bug 时间
TS基础1. 类型注解概念:类型注解是TypeScript的核心特性,用于为变量、函数参数、返回值等添加类型信息,提供编译时类型检查。
语法规则:
变量:变量名: 类型 = 值
函数参数:参数名: 类型
函数返回值:function 函数名(): 返回类型
对象:{ 属性名: 类型 }
作用:
提供类型安全,在编译时发现错误
增强代码可读性和可维护性
提供更好的IDE支持和智能提示
基本类型注解1234567 ...
什么是数据响应式数据响应式就是:当数据发生变化时,使用这个数据的地方会自动更新
对比示例12345678910// 普通JavaScript - 不会自动更新let message = 'Hello'message = 'World' // 页面不会自动更新// Vue响应式 - 会自动更新const vm = new Vue({ data: { message: 'Hello' }, template: '<div>{{ message }}</div>'})vm.message = 'World' // 页面自动更新
核心思想
数据驱动:数据变化,视图跟着变
自动追踪:Vue自动知道哪些地方用了这个数据
批量更新:多次数据变化合并成一次DOM更新
基本流程
数据劫持:拦截对数据的访问和修改
依赖收集:记录哪些地方使用了这个数据
派发更新:数据变化时通知所有依赖的地方
视 ...
什么是模板编译模板编译就是把我们写的Vue模板转换成JavaScript代码的过程。简单来说,就是:
输入:Vue模板字符串输出:可执行的render函数
12345<!-- 输入:模板 --><div id="app"> <h1>{{ message }}</h1> <button @click="handleClick">点击我</button></div>
1234567891011121314// 输出:render函数function render() { with(this) { return _c('div', { attrs: {"id": "app"} }, [ _c('h1', [_v(_s(message))]), ...

