前端跨域卡脖子?0服务器成本,3分钟搞定!(附保姆级教程)
别再为CORS报错抓狂!没有后端服务器?云函数秒变你的免费“跨域救星”! 一 红色的CORS跨域错误 前端开发想调个第三方接口(例如:百度文心一言的API),是不是经常被这个 红色的CORS跨域错误 搞得头皮发麻?😤 没错!浏览器出于安全考虑,默认阻止了这种“跨域”请求。最正统解法当然是部署自己的后… 阅读更多 »前端跨域卡脖子?0服务器成本,3分钟搞定!(附保姆级教程)
别再为CORS报错抓狂!没有后端服务器?云函数秒变你的免费“跨域救星”! 一 红色的CORS跨域错误 前端开发想调个第三方接口(例如:百度文心一言的API),是不是经常被这个 红色的CORS跨域错误 搞得头皮发麻?😤 没错!浏览器出于安全考虑,默认阻止了这种“跨域”请求。最正统解法当然是部署自己的后… 阅读更多 »前端跨域卡脖子?0服务器成本,3分钟搞定!(附保姆级教程)
一 JS调用C++函数 从JS中调用C++函数,需要把C++函数声明为导出,有好几种方法,本文采用最原始也是效率最高的方法,就是函数签名加上 EMSCRIPTEN_KEEPALIVE。 1.1 EMSCRIPTEN_KEEPALIVE 作用是告诉C++编译器这个函数会被用到,不要在“tree sha… 阅读更多 »WebAssembly笔记(4)-JavaScript和C++的交互
本文演示把一个C/C++代码编译成WebAssembly格式文件,并在浏览器上运行。以 MacOS 12.3.1为例,步骤如下: 一 前置条件 Git。Mac系统默认已经安装; CMake。Mac中使用 brew install cmake 安装; 系统编译工具。Mac中安装 XCode 即可; P… 阅读更多 »WebAssembly笔记(3)-编译和运行HelloWorld
随着Web网页的广泛发展,拥有JIT技术加持后,JavaScript的执行效率大幅提升,但由于解释型语言的特点,以及动态类型的天生缺陷,在某些CPU密集计算型的应用场景下,JavaScript的性能仍然力不从心。而且有大量C/C++等编译型语言的软件和库,也有着搬到Web上执行的需求,但如果全部用J… 阅读更多 »WebAssembly笔记(2)-从asm.js到wasm
WebAssembly可以让C/C++、Rust、Java、C#等多种高级语言编写的代码,在Web上以接近原生性能的方式运行,有越来越多的大型应用通过它跑在了网页上,例如:AutoCAD在线版、Figma在线版,还有在微信上支持运行Unity小游戏,底层的关键技术都是基于WebAssembly。 要… 阅读更多 »WebAssembly笔记(1)-JavaScript的执行流程
一 定义 标准的MDN定义:用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。 用简单通俗的话来说就是,判断左侧是否为右侧的实例化对象。 二 使用方法 使用格式为:a instanceof b。其中,左侧 a 为对象,右侧 b 必须为函数类型。 示例代码如下 ‘abc’ … 阅读更多 »JavaScript中 instanceof 的实现原理
Image是HTMLImageElement的封装类,或者说HTMLImageElement是Image的基类。在前端开发中,创建一个图像有时会使用如下代码。 let img = new Image(); … img.src = url; return img; 如果重写src的set操作,可使… 阅读更多 »如何修改Image或HTMLImageElement的src属性实现
一、简介 好的编码规范有助于我们写出清晰、明确、更容易维护的代码。 ESLint是一个JavaScript语法检查器,它可以根据预置或自定义的编码规范,自动检查代码语法,并输出检查结果,同时也支持TypeScript代码。 二、安装 先确保你电脑已经安装了 node 和 npm。 2.1 安装ESL… 阅读更多 »使用ESLint检查JavaScript或TypeScript代码
报错 Error: Cannot find module ‘webpack-cli/bin/config-yargs’ 的原因是当前的 webpack 5.x 和 webapck-cli 4.x 有冲突,解决办法是: 1、卸载当前的 webpack-cli npm uninstall webpack… 阅读更多 »解决webpack打包报错:Error: Cannot find module ‘webpack-cli/bin/config-yargs‘
1 简介 在VSCode中编写的TypeScript代码不能直接运行,需要先用tsc编译为JavaScript,然后才能运行。 有什么方法能直接运行TypeScript呢?使用VSCode插件Code Runner就可以了。 2 使用步骤 首先确保拥有Node.js环境。 2.1 全局安装ts-no… 阅读更多 »VSCode插件CodeRunner直接运行TypeScript
推荐一个特别好用的VSCode插件:Git History Diff,安装这个插件后,如果你的VSCode打开了一个Git管理的代码,则在VSCode编辑窗口中,可以看到所有的提交记录、改动文件,包括每一行代码的提交时间、提交人,非常方便。
javascript-obfuscator是一个免费的JavaScript代码混淆工具,它功能强大,可以把你的源代码变得“面目全非”,完全没有可读性。还具有部分防调试功能,给JavaScript代码多一层保护。 安装 它支持很多流行的前端打包工具,如Webpack、Gulp、Grunt等都有相应的插… 阅读更多 »混淆工具javascript-obfuscator使用简介
1、简介 UglifyJS是个包含JS解释器、代码最小化、压缩、美化的工具集,是前端开发打包的最常用工具之一。 CocosCreator引擎采用gulp管理构建流程,其中也使用UglifyJS来做代码的合并和压缩。 UglifyJS目前只能压缩JS代码,且只支持到ES5语法,尚不支持ES6。 2、安… 阅读更多 »前端打包工具UglifyJS使用入门
1. Set 基本用法 ES6新增了Set,它类似于数组,但是成员的值不会重复,都是唯一的。 const s = new Set(); [1, 2, 3, 4, 3, 2, 1].forEach(x => s.add(x)); for (let i of s) { console.log(i); }… 阅读更多 »ES6入门教程笔记(10)-Set和Map
ES6对对象的扩展非常多,本文只介绍自己感兴趣的若干,需要完整的请阅读文末原文。 属性的简洁表示法 ES6允许直接写入变量和方法,作为对象的属性和方法。这种写法更加简洁。 let x = 1; let name = ‘root’; // ES5 let obj = { x:x, name:name … 阅读更多 »ES6入门教程笔记(9)-对象的扩展
ES6对数组的扩展非常多,本文只介绍自己感兴趣的若干,需要完整的请阅读文末的原文。 flat() 数组的成员可能还是数组,Array.prototype.flat()可以将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新的数组。 [1, 2, [3, 4]].flat() // [1, 2, 3… 阅读更多 »ES6入门教程笔记(8)-数组的扩展
VSCode是微软推出的一款开源免费的代码编辑器,不但好用而且功能强大,能直接调试Node.js代码,步骤如下。 1、首先把Node.js代码放在一个目录下,然后用VSCode打开这个文件夹; 注意:如果用VSCode直接打开代码文件,则后面点击“调试”按钮将会弹出错误提示:Please first… 阅读更多 »用VSCode断点调试Node.js代码
基本用法 ES6允许使用“箭头”(=>)定义函数。 // 箭头函数 let f = () => 5; // ES5 let f = function() { return 5; }; 箭头函数用圆括号代表参数部分,如果代码部分多于一条语句,就用大括号括起来。 // 箭头函数 let sum = (n… 阅读更多 »ES6入门教程笔记(7)-箭头函数
1 函数参数的默认值 基本用法 ES6之前,函数参数不能指定默认值,只能用变通的方法。 function print(x, y) { y = y || ‘World’; console.log(x, y); } print(‘Hello’) // “Hello World” print(‘Hello… 阅读更多 »ES6入门教程笔记(6)-函数的扩展
Number.parseInt(), Number.parseFloat() ES6将全局方法parseInt()和parseFloat(),移植到Number对象上面,用法保持不变。 // ES5的写法 parseInt(‘12.34’) // 12 parseFloat(‘123.45#’) /… 阅读更多 »ES6入门教程笔记(5)-数值的扩展