nodejs的切换commonjs和esmodule语法

package.json里修改type:

json 复制代码
{
	...
	"type": "commonjs",//commonjs语法
	"type": "module",//esmodule语法
	...
}

commonjs语法:

CommUtils.js文件:

javascript 复制代码
const fs = require('fs');

function readJsonFile(filePath) {
    try {
        const data = fs.readFileSync(filePath, 'utf-8');
        return JSON.parse(data);
    } catch (error) {
        // 处理读取文件或解析 JSON 错误
        console.error(`Error reading JSON file ${filePath}: ${error.message}`);
        return null;
    }
}

function writeJsonFile(filePath, data) {
    // 如果data为null,则不写入文件
    if (data === null || data === undefined || (Array.isArray(data) && data.length === 0)) {
        return;
    }

    try {
        const jsonData = JSON.stringify(data, null, 4);
        fs.writeFileSync(filePath, jsonData, 'utf-8');
    } catch (error) {
        // 处理写入文件错误
        console.error(`Error writing JSON file ${filePath}: ${error.message}`);
    }
}


function bytesToInteger(bytes, isBigEndian) {  
    if (bytes.length < 1 || bytes.length > 8) {  
        throw new Error("bytes.length<1||bytes.length>8");  
    }  
  
    let temp = 0;  
  
    if (isBigEndian) {  
        for (let i = 0; i < bytes.length; i++) { // 从低位到高位  
            if (i === 0) {  
                temp = (bytes[i] & 0xFF) << (i * 8);  
            } else {  
                temp = temp | ((bytes[i] & 0xFF) << (i * 8));  
            }  
        }  
    } else {  
        for (let i = bytes.length - 1; i >= 0; i--) { // 从高位到低位  
            if (i === (bytes.length - 1)) {  
                temp = (bytes[i] & 0xFF) << ((bytes.length - i - 1) * 8);  
            } else {  
                temp = temp | ((bytes[i] & 0xFF) << ((bytes.length - i - 1) * 8));  
            }  
        }  
    }  
    return temp;  
}

function toHexString(num){
    return '0x'+num.toString(16).toUpperCase().padStart(2,'0');
}
function listToHexString(arr){
    let str = ''
    for(let i=0;i<arr.length;i++){
        str += toHexString(arr[i]) +(i!=arr.length-1?', ':'')
    }
    return str
}

module.exports = {
    readJsonFile,
    writeJsonFile,
    bytesToInteger,
    toHexString,
    listToHexString,
}

使用:

javascript 复制代码
const path = require('path');
const CommUtils = require(path.join(__dirname, 'CommUtils.js'));
console.log(CommUtils.toHexString(111));

esmodule语法:

CommUtils.js文件:

javascript 复制代码
import { readFileSync, writeFileSync } from 'fs';

function readJsonFile(filePath) {
    try {
        const data = readFileSync(filePath, 'utf-8');
        return JSON.parse(data);
    } catch (error) {
        // 处理读取文件或解析 JSON 错误
        console.error(`Error reading JSON file ${filePath}: ${error.message}`);
        return null;
    }
}

function writeJsonFile(filePath, data) {
    // 如果data为null,则不写入文件
    if (data === null || data === undefined || (Array.isArray(data) && data.length === 0)) {
        return;
    }

    try {
        const jsonData = JSON.stringify(data, null, 4);
        writeFileSync(filePath, jsonData, 'utf-8');
    } catch (error) {
        // 处理写入文件错误
        console.error(`Error writing JSON file ${filePath}: ${error.message}`);
    }
}


function bytesToInteger(bytes, isBigEndian) {  
    if (bytes.length < 1 || bytes.length > 8) {  
        throw new Error("bytes.length<1||bytes.length>8");  
    }  
  
    let temp = 0;  
  
    if (isBigEndian) {  
        for (let i = 0; i < bytes.length; i++) { // 从低位到高位  
            if (i === 0) {  
                temp = (bytes[i] & 0xFF) << (i * 8);  
            } else {  
                temp = temp | ((bytes[i] & 0xFF) << (i * 8));  
            }  
        }  
    } else {  
        for (let i = bytes.length - 1; i >= 0; i--) { // 从高位到低位  
            if (i === (bytes.length - 1)) {  
                temp = (bytes[i] & 0xFF) << ((bytes.length - i - 1) * 8);  
            } else {  
                temp = temp | ((bytes[i] & 0xFF) << ((bytes.length - i - 1) * 8));  
            }  
        }  
    }  
    return temp;  
}

function toHexString(num){
    return '0x'+num.toString(16).toUpperCase().padStart(2,'0');
}
function listToHexString(arr){
    let str = ''
    for(let i=0;i<arr.length;i++){
        str += toHexString(arr[i]) +(i!=arr.length-1?', ':'')
    }
    return str
}

export default {
    readJsonFile,
    writeJsonFile,
    bytesToInteger,
    toHexString,
    listToHexString,
}

使用:

javascript 复制代码
import CommUtils from './CommUtils.js';
console.log(CommUtils.toHexString(111));
相关推荐
程序员大阳7 分钟前
副队长JavaScript教程(52)-DOM操作元素的内容
javascript·dom·innertext·innerhtml·value·内容操作
裕波1 小时前
苏千|从 cnpm 到 Vite+:AI 时代的开发者体验演进
javascript
console.log('npc')2 小时前
周期任务功能完整实现:CRON 编辑器 + 模板变量 + 执行历史
javascript·vue.js·编辑器
程序员大阳2 小时前
副队长JavaScript教程(58)-基于DOM的网页留言板开发
javascript·实例·dom·案例·留言板
咚咚咚小柒2 小时前
【前端】LangChain.js学习
前端·javascript·人工智能·typescript·langchain·vue·ai编程
少年的范儿3 小时前
Windows 安装 Node.js 教程:nvm 版本管理 + pnpm 安装配置
windows·npm·node.js
程序员大阳3 小时前
副队长JavaScript教程(55)-DOM节点增删改查
javascript·dom·增删改查·节点·克隆
peach4 小时前
同样是装依赖,为什么 npm 长成 node_modules,Maven 长成 .m2
npm·node.js·maven
程序0074 小时前
天地图实现收货地址定位
前端·javascript·css
心梦轻舞4 小时前
从 14 道面试题,彻底搞懂 Event Loop 与 Vue2 nextTick 底层原理
javascript