如何从服务器生成 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 文件