首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为前端项目建立一个环境

为前端项目建立一个环境
EN

Stack Overflow用户
提问于 2017-07-07 11:29:40
回答 2查看 332关注 0票数 0

我正在使用VS代码进行一个纯粹的前端项目。我有一个打字夹,另一个是sass的文件夹。我正在为js和css在单独的文件夹中编译那些带Gulp的内容。

当我尝试使用var something = require('some-node-module');时,我遇到了一个问题,并且在类型记录和浏览器控制台上都出现了错误。我为此添加了@type,但它没有工作,因为浏览器控制台中仍然有一个错误。我搜索了更多,找到了问题,我明白了问题的所在,然后我使用了Browserify。现在,类型记录是在编译时没有错误的,每次更改时,我都要做一个包。我能做些什么来摆脱Browserify,并且仍然能够在类型记录中使用require()吗?由于这是我的第一个纯粹的前端项目,我希望保持它的简单和干净,而不是使用大量的插件/模块来使它工作。

我的tsconfig.json:

代码语言:javascript
复制
{
"files": [
    "ts/main.ts"     
],
"compilerOptions": {
    "noImplicitAny": true,
    "target": "es5",
    "outDir": "js"
}
}

我是否可以使用类型而不需要安装更多的节点模块来使其工作呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-07 12:53:22

当您使用require()import时,您将使用模块。当您使用模块时,您需要一个模块绑定器,例如浏览器化或webpack。

但是,您不必在类型记录项目中使用模块。类型记录编译器会自动将所有单独的.ts文件连接到一个.js包中。您需要在tsconfig.json中设置输出文件:

代码语言:javascript
复制
{
    "compilerOptions": {
        "sourceMap":  true,
        "removeComments": true,
        "target":"es5",
        "out": "dist/js/main.js"
    }
}

一个单独的.ts文件可能如下所示:

代码语言:javascript
复制
class Test {
   constructor(){
      console.log("hi!");
   }
}

使用模块的不同之处在于,Test类将被放置在全局范围内,但可以通过使用将所有类放置在其中的命名空间来防止这种情况:

代码语言:javascript
复制
namespace Game {
    export class Test {
       constructor(){
          console.log("hi!");
       }
    }
}

现在,在全局范围内只有一个名为“Game”的对象,您不需要模块绑定器来创建单个.js文件。

票数 1
EN

Stack Overflow用户

发布于 2017-07-07 12:57:27

每个前端项目都需要Browserify或Webpack (推荐),这将将您的模块绑定到与浏览器兼容的脚本中。require()nodejs的函数,它导入其他模块/脚本,但在浏览器生态系统中不存在。

在这里读到webpack的故事。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44969682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档