【问题标题】:How to create data structure in JavaScript?如何在 JavaScript 中创建数据结构?
【发布时间】:2015-06-30 13:29:01
【问题描述】:

我是一名 C# 开发人员,同时也在尝试使用 JavaScript。

对于数据处理程序,我想创建如下数据结构:

id,
begin,
end,
organiser,
    name,
    city,
    postalcode,
    street,
venue,
    name,
    city,
    postalcode,
    street

来自 C#,我将为主要结构创建一个“类”(gig.js):

function Gig(gig)
{
  this.id = gig.id;
  this.begin = gig.begin;
  this.end = gig.end;
  this.organiser = gig.organiser;
  this.venue = gig.venue;
}

还有一个用于组织者和场地的“课程”(address.js):

function Address(a)
{
  this.name = a.name;
  this.city = a.city;
  this.postalcode = a.postalcode;
  this.street = a.street;
}

由于我需要在Gig-class中引用Address-class,所以我想在主类中引用address-class,比如

包含地址.js

我在网上搜索过,令我大吃一惊的是,似乎根本没有包含机制。 HTML5 引入了一种将 JavaScript 包含在另一个 JavaScript 中的方法,but is seems like no browser is supporting this so far 我红色了一些 possible solutions here,但它们看起来都像是(按照我的预期)简单的一行代码的 hack。

那么,现在你如何使用另一个 JavaScript 文件?我需要为此使用其他架构方法吗?我是否只是将它们包含在调用 html 中,并且当我为主类编写代码时,我只是希望地址类也已加载?

提前致谢,
弗兰克

【问题讨论】:

  • 我不太确定你在问什么。如果您已将地址类包含在 HTML 中,为什么不会加载地址类?
  • “对于数据处理程序,我想创建一个数据结构,如:” 生成的对象是否包含属性,GigAddress 的值?
  • @Juhana:由于 gig.js 需要包含,我认为在另一个文件中引用它是非常糟糕的架构。我需要 gig.js 中的引用,所以我想把引用放在 gig.js 中,对吧?
  • @guest271314:地址结构将用于 Gig 结构的两个属性,因此生成的结构将包含两者的属性。
  • 此外,JS 没有与 C# 类似的范围和命名空间,因此在实践中,包含脚本文件的位置没有任何区别。仅在需要的地方包含结构文件不会阻止它污染全局命名空间。

标签: javascript html architecture include


【解决方案1】:

简单的方法:在 HTML 中嵌入类:

<script src="path/to/address.js"></script>
<script src="path/to/gig.js"></script>
<script>
    // address is loaded before gig (sync loading), and now can use both
</script>

对于更复杂的依赖关系:处理它的常用方法是使用 browserify 捆绑您的模块

编辑: 由于后者似乎是您正在寻找的,这里有一个例子:

src/gig.js:

// require dependencies
// one of your source files
var Address = require('./src/address');
// npm package dependency as installed by npm i someLib --save-dev
var someLib = require('someLib');

var Gig = function() {
    this.address = new Address();
}
// provide dependency
export.Gig = Gig;

main.js:

var exampleStuff = require('src/Gig');
go();

您通过 npm 安装 browserify 和其他模块,然后捆绑:

browserify main.js -o dist.js

然后在你的 html &lt;script&gt; 标签中包含 dist.js

【讨论】:

  • 感谢您的示例!我在 npm 上看到了一次查看时间,所以看起来我应该尝试熟悉它。现在,我试用了 AngularJS,看看我能用它走多远。
【解决方案2】:

使用RequireJS。 Requirejs 是一个库,它提供了一个很好的接口来处理依赖项。有一个很好的教程here。除此之外,你是对的,目前没有实现的方法来强制 JS 中的依赖项,除了希望使用你的 JS 文件的人在 html 中添加了正确的源元素。这就是为什么 JavaScript 库通常被压缩为一个文件的原因。

【讨论】:

  • 感谢您的信息!我开始使用 AngularJS,只是想习惯它。如果这还不足以创建数据结构,我将查看 RequireJS。同时,我希望浏览器能够实现#include语句:)
猜你喜欢
  • 1970-01-01
  • 2017-01-25
  • 2019-12-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2017-01-10
  • 2020-12-01
  • 1970-01-01
相关资源
最近更新 更多