抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

前言

有时候可能需要在浏览器环境运行包含nodejs模块的依赖,这时候就需要将nodejs模块代码编译为浏览器可执行的CommonJS风格代码.在以前可能需要自己手动编译(比如我耗时几个月自己编译完的),完成这项工作真的又耗时又考验心态.但是现在有了一些工具,可以更方便的完成这项工作(想起来自己手动编译完的代码,真的有点想哭).

前置准备

  1. 初始化项目

    npm init
    

    一路回车即可

  2. 安装依赖

    npm i @wecom/crypto
    

    为什么要安装它?因为我刚好在解决它在浏览器运行的问题

  3. index.js

    const { decrypt } = require("@wecom/crypto");
    const encodingAESKey = "FMox2C8OsO0yfD8jzz6fRElAb6r6hm9BRJfUqxjnCUe"
    const ciphered = "bwhkOMneUrrkav5ZhvH24Jqz56GHpzwNxJCQRbTuoGneBOQZxRlckJYtbWX+HJBIDywmH9EvSxqjqBnVyTTB1+OVp9X+oGgYk0uA6/5AOGzTrK65kKjjoGwf6CYktHWTF2nh2qpRKw+ah/6XjxXnIpQ1wUsmjVmFety57eh97l+j9U/AG14zOsBciNTsAR5ei4yMcQZxF+FQF2qAxWKCQTBPrfhp4eccuwHR5/huRk8mH4zTy875B6B1kneR8sE75Rmwx1FRO0rFdMWBq0ti6hnSTXK35aAg0+VWEpZc2BK9zd4MiX0c89l9m4E7MCmbj3xPAYn9nos16pgxfVnv9+WbA1aM9xXEo0p8XXOktq+3kr4gULTAO7ik51TArHNk4q6mG5YsR5PkIoCztOZu8w=="
    const { message, id } = decrypt(encodingAESKey, ciphered);
    console.log({ message, id });
    
  4. index.html
    <script  src="./bundle.js"></script>
    
  5. 项目结构
    ├── index.html
    ├── index.js
    └── package.json
    

    Browserify

    Browserify它的使用方法最简单,但是相对的灵活性没有那么强.
  6. 在准备好前置准备后,执行以下命令
    npx browserify index.js -o bundle.js
    # 提示是否安装browserify,输入y确认回车即可
    
  7. 以服务模式打开index.html,查看控制台输出,正常执行
    博客browserify执行控制台输出

    Webpack + node-polyfill-webpack-plugin

  8. 安装依赖
    npm install --save-dev webpack webpack-cli node-polyfill-webpack-plugin
    
  9. 创建一个 webpack.config.js 文件
    const NodePolyfillPlugin = require("node-polyfill-webpack-plugin");
    const path = require('path');
    module.exports = {
     entry: './index.js', // 需要被编译的文件路径
     output: {
         path: path.resolve("./"),
         filename: 'bundle.js'
     },
     plugins: [
         new NodePolyfillPlugin()
     ]
    };
    
  10. 编译
    npx webpack
    
  11. 控制台输出
    博客nodepolyfillwebpackplugin执行控制台输出

parcel-bundler(没研究明白,但是确实可以用)

polyfill.io

评论