如何快速创建一个最纯的node项目,且每个项目单独管理自己的依赖

🖐🏻 免责声明

本教程仅供学习交流使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,请各读者自觉遵守相关法律法规。

# 初始化当前目录为node项目

npm init 这里会生成一个package.json文件,里面加入一行"type": "module"

node 分 CommonJS(require导入模块) 和 ES Module(import导入模块,写惯了web项目的会熟悉这一种) 两种模块规范,默认情况下,node 运行 CommonJS 模块,通过 package.json 的 type 字段来指定模块规范。

# 安装一个依赖

npm install ethers

# 运行单个脚本

node index.js即可运行

# 项目类型

# ES Module(import导入模块,写惯了web项目的会熟悉这一种)

# 导入一个自己写的js文件

假设我有一个文件httpUtil.js,内容如下

// 创建一个专门的 httpUtil.js 文件或者在网络模块中封装
import axios from "axios";

// 创建并配置 Axios 实例
const service = axios.create({
  baseURL: "", // 设置基础 URL
  timeout: 5000, // 设置超时时间
  headers: {
    "Content-Type": "application/json",
  },
});

// 请求拦截器 - 在请求发出前做处理
service.interceptors.request.use(
  (config) => {
    // 添加 token 到 headers 中(假设从Vuex中获取)
    // const token = store.getters["auth/token"];
    // if (token) {
    //   config.headers.Authorization = `Bearer ${token}`;
    // }

    // 其他可能的预处理,如处理请求参数等

    return config;
  },
  (error) => {
    // 对请求错误做些什么
    console.error("请求错误:", error);
    Promise.reject(error);
  }
);

// 响应拦截器 - 在收到响应后做处理
service.interceptors.response.use(
  (response) => {
    // console.log(response);
    // 如果返回的状态码为200,说明接口请求成功,可以正常拿到数据
    if (response.status === 200) {
      const res = response.data;
      console.log(JSON.stringify(res, null, 2));
      return res || {};
    } else {
      console.log(response.statusText);
      return Promise.reject(new Error(response.statusText || "Error"));
    }
  },
  (error) => {
    // 对响应错误做处理
    console.error("接口异常:", error);
    // Message({
    //   message: error.message,
    //   type: "error",
    //   duration: 5 * 1000,
    // });
    return Promise.reject(error);
  }
);

// 定义常用的请求方法
export const get = (url, params) => service.get(url, { params });
export const post = (url, data) => service.post(url, data);
export const put = (url, data) => service.put(url, data);
export const deleteRequest = (url, data) => service.delete(url, { data }); // 注意 DELETE 方法携带数据的方式因后端而异

// ... 其他HTTP方法的封装(如patch, head, options等)

用相对路径导入,最后不省略文件后缀,如js,肯定没问题

import { post } from "./httpUtil.js";

# CommonJS(require导入模块)

npm init的项目默认是这个风格

# 导入一个自己写的js文件

假设我有一个文件httpUtil.js,内容如下

注意,引入包和导出方法的方式都和ES Module不一样:exports.get = (url, params) => service.get(url, { params });

const axios = require("axios");

// 创建并配置 Axios 实例
const service = axios.create({
  baseURL: "", // 设置基础 URL
  timeout: 5000, // 设置超时时间
  headers: {
    "Content-Type": "application/json",
  },
});

// 请求拦截器 - 在请求发出前做处理
service.interceptors.request.use(
  (config) => {
    // 添加 token 到 headers 中(假设从Vuex中获取)
    // const token = store.getters["auth/token"];
    // if (token) {
    //   config.headers.Authorization = `Bearer ${token}`;
    // }

    // 其他可能的预处理,如处理请求参数等

    return config;
  },
  (error) => {
    // 对请求错误做些什么
    console.error("请求错误:", error);
    Promise.reject(error);
  }
);

// 响应拦截器 - 在收到响应后做处理
service.interceptors.response.use(
  (response) => {
    // console.log(response);
    // 如果返回的状态码为200,说明接口请求成功,可以正常拿到数据
    if (response.status === 200) {
      const res = response.data;
      console.log(JSON.stringify(res, null, 2));
      return res || {};
    } else {
      console.log(response.statusText);
      return Promise.reject(new Error(response.statusText || "Error"));
    }
  },
  (error) => {
    // 对响应错误做处理
    console.error("接口异常:", error);
    // Message({
    //   message: error.message,
    //   type: "error",
    //   duration: 5 * 1000,
    // });
    return Promise.reject(error);
  }
);

// 定义常用的请求方法
exports.get = (url, params) => service.get(url, { params });
exports.post = (url, data) => service.post(url, data);
exports.put = (url, data) => service.put(url, data);
exports.deleteRequest = (url, data) => service.delete(url, { data }); // 注意 DELETE 方法携带数据的方式因后端而异

// ... 其他HTTP方法的封装(如patch, head, options等)

用相对路径导入,最后不省略文件后缀,如js,肯定没问题

const { post } = require("./httpUtil.js");

#

# ☕ 请我喝咖啡

如果本文章对您有所帮助,不妨请作者我喝杯咖啡 :)

pay


# ☀️ 广告时间

现承接以下业务,欢迎大家支持:)

  • Web 2.0 & Web 3.0应用定制
  • Web 3.0专项脚本定制与优化
  • 数据爬虫需求快速响应
  • 网站/公众号/小程序一站式开发
  • 毕业设计与科研项目支持
  • 企业管理软件定制:ERP, MES, CRM, 进销存系统等

联系方式:

X:@motuoka

V:ck742931485

wx