如何从服务器生成 Javascript 文件

Posted

技术标签:

【中文标题】如何从服务器生成 Javascript 文件【英文标题】:How To Generate A Javascript File From The Server 【发布时间】:2010-09-09 05:52:30 【问题描述】:

我正在使用 BlogEngine.NET(一个很好的工具),我正在使用 TinyMCE 编辑器,发现有一个地方可以让我创建一个外部链接列表,但它必须是一个 javascript 文件:

external_link_list_url : "example_link_list.js"

这当然很棒,但是我要使用的链接列表需要从数据库中动态生成。这意味着我需要在页面加载时从服务器创建这个 JS 文件。有谁知道这样做的方法?理想情况下,我只想在每次访问编辑器时覆盖此文件。

谢谢!

【问题讨论】:

【参考方案1】:

如果您的第 3 方代码不需要 javascript 文件具有 .js 扩展名,那么您可以创建 HTTPHandler 并将其映射到 web.config 中的 .axd 或 .ashx 扩展名 - 无需更改 IIS设置,因为这些扩展由 IIS 自动配置为由 asp.net 处理。

<system.web>
  <httpHandlers>
    <add verb="*" path="example_link_list.axd" type= "MyProject.MyTinyMCE, MyAssembly" />
  </httpHandlers>
</system.web>

这指示 IIS 将“example_link_list.axd”的所有请求(通过 POST 和 GET)传递给 MyAssembly 程序集中的 MyProject.MyTinyMCE 类的 ProcessRequest 方法(您的 .dll 的名称)

您也可以改用 Visual Studio 的“通用处理程序”模板 - 这将为您创建一个 .ashx 文件和代码隐藏类。也无需编辑 web.config。

使用 HTTPHandler 比使用 .aspx 页面更可取,因为 .aspx 请求具有更多相关的开销(所有页面事件等)

【讨论】:

【参考方案2】:

只需将它指向一个 aspx 文件,然后让该文件吐出您需要的任何 javascript。我最近在 php 中使用 TinyMCE 完成了这项工作,效果非常好。

external_link_list_url : "example_link_list.aspx"

在您的 aspx 文件中:



在您的代码隐藏 (C#) 中:

使用系统; 公共部分类默认值:System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) Response.Write("var tinyMCELinkList = new Array("); // 将所有链接以正确的格式放在这里.. Response.Write(string.Format("['0', '1']", "name", "url")); Response.Write(");");

【讨论】:

【参考方案3】:

我会创建一个 HTTPHandler 来响应从数据库中读取的所需数据。只需将 HTTPHandler 与 web-config 中的特定文件名“example_link_list.js”相关联。确保你设置了

context.Response.ContentType = "text/javascript";

然后只是 context.Response.Write();您的外部链接列表

【讨论】:

【参考方案4】:

如果您不能更改文件扩展名(并且只返回纯文本,调用者不应该关心文件扩展名,js 是纯文本)那么您可以在 IIS 上设置一个处理程序(假设它是 IIS)处理 javascript 文件。

请参阅此链接 - http://msdn.microsoft.com/en-us/library/bb515343.aspx - 了解如何在 Windows 中设置 IIS 6 以处理任何文件扩展名。然后设置一个 HttpHandler 来接收对 .js 的请求(只要谷歌 httphandler 就可以看到很多像这样的好教程:http://www.devx.com/dotnet/Article/6962/0/page/3)

【讨论】:

以上是关于如何从服务器生成 Javascript 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何从 JavaScript 生成 Excel xlsx 文件

如何从现有的 JavaScript 库生成 .d.ts “类型”定义文件?

Jav文件压缩-InputStream转化为base64-Base64解码并生成图片

如何使用 javascript/Nodejs 从生成的 urn 中查看 Forge 中的 BIM360 Revit 文件

如何在 Javascript 中比较字符串和布尔值?

如何使用 QT/python 从 Javascript 调用 C++ 函数?