webpack
Webpack 是一个静态资源打包工具
它会以一个或多个文件作为打包的入口,将我们整个项目所有文件编译组合成一个或多个文件输出出去。输出的文件就是编译好的文件,就可以在浏览器段运行了。我们将 Webpack 输出的文件叫做 bundle
基本使用Webpack 本身功能是有限的:
开发模式:仅能编译 JS 中的 ES Module 语法
生产模式:能编译 JS 中的 ES Module 语法,还能压缩 JS 代码
资源目录123456webpack_code // 项目根目录(所有指令必须在这个目录运行) └── src // 项目源码目录 ├── js # js文件目录 │ ├── count.js │ └── sum.js └── main.js # 项目主文件
创建文件count.js123export default function count(x, y) { return x - y;}
sum.js123export default function sum(...args ...
axios
Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中
它可以用于执行 GET、POST、PUT、DELETE 等 HTTP 请求,支持请求和响应的拦截、取消请求等高级功能,提供了一种优雅、简洁的方式来处理 HTTP 请求。在前后端交互、接口调用等场景中,Axios 是一个非常常用的工具库
安装
使用 npm:
1$ npm install axios
使用 bower:
1$ bower install axios
使用 cdn:
1<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
axios API可以通过向 axios 传递相关配置来创建请求
axios(config)
123456789// 发送 POST 请求axios({ method: 'post', url: '/user/12345', data: { firstNa ...
ES6 新特性
ES6ES6是 ECMAScript 2015 的简称,是 JavaScript 语言的一个重要版本,引入了许多新的语法和功能,使得 JavaScript 更加强大和灵活
let 和 constlet
变量不能重复声明
12let star = '罗志祥';let star = '小猪'; // error
let 有块级作用域
1234{ let girl = '周扬青';}console.log(girl); // error
不仅仅针对花括号,例如 if() 里面
不存在变量提前
12console.log(song); // errorlet song = '恋爱达人';
不影响作用域链
1234let school = 'abc';function fn() { console.log(school); // abc}
const
const 用来定义常量,一旦声明,不可修改
1const A = 'a ...
js 中 for 循环中使用 var 和 let 的区别
var12345for(var i = 0; i < 3; i++) { setTimeout(function() { console.log(i); })}
var 声明提升
使用 var 关键字声明的变量会自动提升到函数作用域顶部,为局部变量
若 var 声明不是包含在函数内,则提升到 script 标签下方,成为全局变量
for循环有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域
所以原 for 循环可以分解为:
123456789101112131415161718192021222324252627282930var i = undefined // 全局变量 i = 0i < 3{ setTimeout(() => { console.log(i); });}i++// i == 1i < 3{ setTimeout(() => { conso ...
栈上分配 标量替换
逃逸分析所有的对象都在堆上吗?
在《深入理解Java虚拟机》中关于Java堆内存有这样一段描述:
随着 JIT 编译期的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化,所有的对象都分配到堆上也渐渐变得不那么"绝对"了
在 Java 虚拟机中,对象是在 Java 堆中分配内存的,这是一个普遍的常识。但是,有一种特殊情况,那就是如果经过逃逸分析(Escape Analysis)后发现,一个对象并没有逃逸出方法的话,那么就可能被优化成栈上分配。这样就无需在堆上分配内存,也无须进行垃圾回收了。这也是最常见的堆外存储技术
此外,前面提到的基于 OpenJDK 深度定制的 TaoBao VM(淘宝虚拟机),其中创新的 GCIH(GC invisible heap)技术实现 off-heap,将生命周期较长的 Java 对象从 heap 中移至 heap 外,并且 GC 不能管理 GCIH 内部的 Java 对象,以此达到降低 GC 的回收频率和提升 GC 的回收效率的目的
如何将堆上的对象分配到栈,需要使用逃逸分析手段
这是一种可以有效减少 ...
webpack 错误提示:Set 'mode' option to 'development' or 'production' to enable defaults for each environment
今天在学习 TypeScript 中,使用 webpack 打包时报一下错误:
WARNING in configurationThe mode option has not been set, webpack will fallback to production for this value.Set mode option to development or production to enable defaults for each environment.
上网查了一下资料,解决方案是在 webpack.config.js 配置文件中 添加:mode: 'development'
123module.exports = { mode: 'development'}
TypeScript
TypeScript 是 JavaScript 的一个超集
.batten {
position: relative;
}
#astronaut-4-animation {
position: absolute;
width: 250px;
top: -90%;
right: -9%;
}
lottie.loadAnimation({
path: '/json/astronaut/4.json',
loop: true,
autoplay: true,
renderer: 'canvas',
container: document.getElementById('astronaut-4-animation'),
});
TypeScript 是一种开源的编程语言,它添加了静态类型和其他一些特性,使得编写大型应用程序更加容易,支持 ECMAScript 6 标准。特点:
支持最新的 JavaScript 新特特性 ...
Mac 快速切换 Node 版本
如果你要在 Mac 环境中管理 Node.js 版本,可以使用 n 工具。n 工具可以帮助你轻松地安装、升级和管理多个 Node.js 版本
安装 n 工具:你可以使用 npm 全局安装 n 工具。在终端中运行以下命令:
1npm install -g n
安装给定版本的 Node.js:安装完 n 工具后,你可以使用以下命令来安装指定版本的 Node.js:
1n 14.17.6
切换 Node.js 版本:如果你需要在不同的项目中切换 Node.js 版本,可以使用以下命令:
1n 16.6.0
查看安装的 Node.js 版本:你可以使用以下命令查看当前已经安装的 Node.js 版本:
1n
这个命令会列出已经安装的 Node.js 版本,并且用星号 * 标识当前正在使用的版本
查看官方 node 版本列表
1npm view node versions
Nexus
在 Mac 上使用 Nexus 与在其他平台上使用基本相同。下面是在 Mac 上使用 Nexus 的一般步骤:
下载和安装 Nexus:首先,你需要从Nexus官方网站下载并安装 Nexus
解压 Nexus 安装包:将下载的 Nexus 安装包解压缩到你选择的目录中
1tar -xvf nexus-x.x.x-xx.tar.gz
配置 Nexus 数据目录:在解压缩的 Nexus 目录中,找到 nexus-x.x.x-xx 文件夹,并将其重命名为 nexus。然后,将 Nexus 数据目录从默认位置(${NEXUS_HOME}/data)更改为你选择的目录
12cd nexusmv nexus-x.x.x-xx data/
配置环境变量(根据自己需要选择配置)
12export NEXUS_HOME=/usr/local/nexus-3.60.0-02-mac/nexus-3.60.0-02PATH=$PATH:$NEXUS_HOME/bin
然后保存退出,在终端中执行刷新配置命令
1source ~/.bash_profile
这样就可以不用进入 b ...
IDEA 输入 mvn 提示 command not found
之前已经配置好 maven 配置,但是 打开 IDEA 终端 输入 mvn 命令时 提示
1command not found: mvn
这里就很坑,明明已经配置好了,但还是不能用,尝试了很多办法还是不行,查了资料才知道使用以下命令即可:
1source ~/.bash_profile
使用此方法每次重启电脑都需要重新配置一下 IDEA