提问人:Fifi 提问时间:4/18/2023 最后编辑:Fifi 更新时间:4/18/2023 访问量:278
前端作为公共文件和后端作为模块之间的 JS 文件共享
JS file share between front end as common file and backend as module
问:
JS 文件名包含一个数据数组,例如:list.js
let users = [{firstname: 'Paul', lastname:'smith'}];
此文件在客户端加载,并包含以下行:
<script src="/js/list.js"></script>
因此,相同的文件也必须加载到服务器端的模块中(在 node.js 中)。
require('../public/js/list.js');
由于这是在模块中,因此我不能使用 .我必须使用导入:require
import { users } from '../public/js/list.js';
另一方面,如果我导出变量,我将无法再在客户端加载文件:
export var users = [{firstname: 'Paul', lastname:'smith'}];
有没有在客户端和服务器端加载文件的技巧?
编辑:如果我在文件中使用以下内容list.js
module.exports = [{firstname: 'Paul', lastname:'smith'}];
我必须在我的 node.js 模块中使用 require:
const { users } = require('../public/js/list.js');
它不起作用:
module.exports = [{firstname: 'Paul', lastname:'smith'}];
使用第二个选项时,不能放入测试中:export
if (true) export default testList;
我遇到了以下错误:
if (true) export default users;
^^^^^^
SyntaxError: Unexpected token 'export'
答:
0赞
Abderrahmene Merzoug
4/18/2023
#1
我耍了个小把戏。
您可以使用 nodejs 检测来做到这一点。 请参阅以下内容。
let users = [{firstname: 'Paul', lastname:'smith'}]; // Your variable
if (typeof process === 'object') { // Detect when this is nodejs
// Expose the users variable
module.exports.users = users;
}
这应该在兄弟方面起作用。 在 nodejs 端:
const { users } = require('../public/js/list.js');
希望能有所帮助。 问候。
评论
0赞
Fifi
4/18/2023
请求的模块 '../public/js/list.js' 不提供名为 'users' 的导出
0赞
Fifi
4/18/2023
哼哼,当我使用 if works 时,但一旦我把它放在测试中,我就得到了export default users;
SyntaxError: Unexpected token 'export'
1赞
rsp
4/18/2023
@Fifi 你不能把 因为 是静态分析的(不运行代码)。export
if
export
0赞
Fifi
4/18/2023
所以,我本来想做的是不可能的?
1赞
Abderrahmene Merzoug
4/18/2023
所以你试过导入语句吗?
评论
require
module
export
require
require
module.exports