语法差异
方式 | 语法 | 示例 |
---|
require | CommonJS 规范(Node.js 传统方式) | let mixLogin = require(‘@/mixin/mixLogin.js’) |
import | ES Module 规范(现代标准) | import mixLogin from ‘@/mixin/mixLogin.js’ |
使用场景对比
require的特点
- 动态加载模块(条件判断、路径拼接)
- 在非模块化环境中(如某些旧版 Node.js 或普通 JS 文件)
const moduleName = someCondition ? 'mixLoginA' : 'mixLoginB';
const mixLogin = require(`@/mixin/${moduleName}.js`);
import的特点
- 现代前端项目(Vue/React/UniApp 等)
- 需要静态分析(如 Tree Shaking 优化)
- 支持异步加载(import()动态导入)
导出格式(所需要引入的文件)说明
ES Module 导出的.js文件如果使用CommonJS规范引入需要加 .default
export default {data() { return { msg: 'Hello' } },methods: { hello() { console.log(this.msg) } }
}
module.exports = {data() { return { msg: 'Hello' } },methods: { hello() { console.log(this.msg) } }
}
const mixLogin = require('@/mixLogin.js').default;
Vue.mixin(mixLogin);
const mixLogin = require('@/mixLogin.js');
Vue.mixin(mixLogin);
推荐做法
- 如果 mixLogin.js用 export default,则 import直接使用。
- 如果 mixLogin.js用 module.exports,则 require直接使用。