javascript - "require"或 "import"模块化 javascript ASP.Net MVC 5、Visual Studio 2015 的最简单方法

标签 javascript jquery ajax asp.net-mvc-5 visual-studio-2015

我想做的就是能够模块化我的 javascript/jquery/ajax 客户端代码,使用我已经编写的一些现有库代码,现在想在我的页面的脚本部分中使用 - 使用一些简单的东西,比如 Node“require”或 ES6“import”语法。

[ASP.Net MVC 5、Visual Studio 2015]

在网页中:

@section scripts
{

    @Scripts.Render("~/Scripts/Views/Items/Index.js")

}

在 Index.js 中:

$(function ()
{
    var myLib = require("../Shared/my-lib");

或者

$(function ()
{
   import * from "../Shared/my-lib";

在 my-lib.js 中:

export var myFunction1 = myFunction1;
export var myFunction2 = myFunction2;

我是一位经验丰富的 .NETter,但有点 js 菜鸟,所以如果我遗漏了任何明显的内容,请告诉我!我只是想让它保持干燥,你知道吗?

我尝试按照上面的方法进行操作,但它会引发有关“import”或“require”的语法错误,所以我认为它不仅仅可以开箱即用。

我查阅了 Browserify 和 RequireJS - 但这似乎是一大堆繁琐的设置(是的,我对 npm 很好,但它是所有设置文件、构建文件、编写库代码的特定方式......等等.等)-我真的必须做所有这些只是为了“包含”/导入一些代码吗?

我应该将我的库编写为 OO javascript 吗?这会有帮助吗?

目前我正在做:

 <script src="@Url.Content("~/Scripts/Views/Shared/my-lib.js")" type="text/javascript"></script>
 <script src="@Url.Content("~/Scripts/Views/Item/Index.js")" type="text/javascript"></script>

我觉得这不太优雅......

最佳答案

取决于您要维护的文件数量以及这些文件之间的依赖关系。如果这只是几个文件,那么您可以简单地包含它们,就像您已经做的那样,并将重复的代码放入 JS 模块中(当然是按顺序)以保持代码干燥。

例如

var myLib = (function(){
    var privateVar = 1;

    var method1 = function(){
    };
    // export
    return {
        method1: method1
    }
})();

此外,使用 jQuery,如果需要,您可以随时使用 $.getScript 有条件地加载 JavaScript。因此您可以根据当前页面路由、名称等仅加载特定的 JS 文件。

但是如果我们正在谈论更多的 JS 文件(即使只有 10 个文件/JS 模块,如果考虑更复杂的依赖关系场景,项目的维护也会变得相当困难例如file1依赖于file2file4依赖于file3file2等) 。在这种情况下,绝对值得将时间投入到一些AMD上。框架如 RequireJS 。其他框架如 Angular 有自己的 modularization功能,并且这些功能实际上可以与 RequireJS 共存,正如所讨论的 here

此外,很多时候项目一开始看起来很简单,但后来发展得出乎意料地快。不过,这取决于您的决定。

您还可以考虑一些现有的 nuget包如 RequireJS.Net帮助您集成到 ASP.NET MVC 项目中。

顺便说一句。就导入导出而言 - 如 docs 中所述:

Note: This feature is not implemented in any browsers natively at this time. It is implemented in many transpilers, such as the Traceur Compiler, Babel or Rollup.

关于javascript - "require"或 "import"模块化 javascript ASP.Net MVC 5、Visual Studio 2015 的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38501084/

相关文章:

javascript - 在javascript中按数字随机化颜色

javascript - 在动态创建的元素上动态创建 onclick 事件

javascript - 为什么包含在一个字符串变量中的 Javascript 一旦被分配给另一个字符串变量就会立即执行?

javascript - 使用带 href 标签的 Bootstrap 模式

ruby-on-rails - 当文本字段填充多对多表单时,Rails 3.2 Ajax 更新 Div

jquery - jQuery ajax处理204无内容

javascript - 在 mvc View 中检索数据

javascript - 在 Google Adwords 中跟踪多个不同的网址点击作为转化

javascript - 如何使用JQuery读取href属性

javascript - 在 jQuery 中单击按钮