gpt4 book ai didi

javascript - ES 6 - 使用类

转载 作者:搜寻专家 更新时间:2023-10-31 23:46:57 26 4
gpt4 key购买 nike

我正在学习类的 ES 6 语法。我来自 C# 背景,所以如果我的术语不正确,我深表歉意。或者,如果我正在做一些看起来很奇怪的事情。

我正在构建一个网络应用程序作为学习练习。它建立在 Node 和 Express 之上。我有一些这样定义的路线:

'use strict';

module.exports = function() {
const app = this;

app.use('/blog', function(req, res) {
console.log('loading blog postings');
res.render('blog', {});
});

app.use('/', function(req, res) {
console.log('looking up: ' + req.path);
res.render('home', {});
});
};

我试图在这些 View 后面放置一些 viewModel。所以,我有一个名为 viewModels 的目录。该目录包含这些文件:

index.js
blog.js
home.js

目前的文件,可能不准确,看起来像这样:

index.js

'use strict';

module.exports = function() {
const HomeViewModel = require('./home);
const BlogViewModel = require('./blog);
};

blog.js

export default class BlogViewModel {
constructor() {
this.title = 'My Blog';
}
}

home.js

export default class HomeViewModel {
constructor() {
this.title = 'Home';
}
}

我的想法是,我可以使用 index.js 作为定义我的包或命名空间的方式。然后,在我的路由代码中,我可以做这样的事情:

'use strict';

module.exports = function() {
const app = this;
const ViewModels = require('../viewModels/index');

app.use('/blog', function(req, res) {
console.log('loading blog postings');
let viewModel = new ViewModels.BlogViewModel();
res.render('blog', viewModel);
});

app.use('/', function(req, res) {
console.log('looking up: ' + req.path);
let viewModel = new ViewModels.HomeViewModel();
res.render('home', viewModel);
});
};

但是,当我尝试这样做时,出现了一些运行时错误,提示“错误:找不到模块‘../viewModels/index’”。这意味着我没有正确设置我的模块。但是,看起来我做错了什么?

最佳答案

您的 index.js 文件不正确,您没有从那里导出 ViewModel。将其更改为:

'use strict';

module.exports = {
HomeViewModel: require('./home'),
BlogViewModel: require('./blog')
};

而且... viewModels 它适用于 C#,但不适用于 Node.js。在 Node 中,它应该只是模型,IMO。

更新:

Node.js 并不完全支持所有 ES6 特性,尤其是新模块声明:https://nodejs.org/en/docs/es6/ .您应该使用标准的 CommonJs 模块声明来导出您的函数:

'use strict';

class HomeViewModel {
constructor() {
this.title = 'Home';
}
}

module.exports = HomeViewModel;

关于javascript - ES 6 - 使用类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36404976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com