这是一个有趣的问题,答案是您当然可以使用 Azure 函数构建网站。您可以创建一个 http 触发器,该触发器返回您包含在函数中的静态 html 文件。如果需要,您可以向该文件添加 Javascript 或 jQuery 逻辑。要获得更多功能,您可以创建更多用作 API 的函数,您可以从 html 文件中查询这些函数。API 可以例如利用 Azure 存储,您可以在其中廉价地将数据存储在表或 blob 中。
使用这种模式,理论上您可以在无服务器架构上构建复杂的 Web 应用程序。但是,我猜你可能会觉得使用起来有点麻烦,因为工具还不是很好。另一方面,您永远不需要考虑托管/扩展,所以这是一个很大的优势。
为了证明我的理论,我用两个 c# http 触发函数实现了一个小函数应用程序:一个用于提供 html 文件,另一个用于返回数字的 api。只是为了证明这一点而迅速拼凑起来,所以如果代码混乱,我深表歉意。
HttpTriggerCSharp1:
using System.Net;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using System.IO;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
var response = new HttpResponseMessage(HttpStatusCode.OK);
var stream = new FileStream(@"d:\home\site\wwwroot\HttpTriggerCSharp1\index.html", FileMode.Open);
response.Content = new StreamContent(stream);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
return response;
}
HttpTriggerCSharp2:
using System.Net;
public static async Task<int> Run(HttpRequestMessage req, TraceWriter log)
{
return 42;
}
index.html:(请注意,您必须将 index.html 文件添加到您的函数文件集合中)
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function() {
var original = $("#testDiv").text();
$("#testDiv").text(original + " - jQuery added this!");
$("#testButton").click(ButtonClick);
});
var i = 0;
function ButtonClick() {
i++;
var result = i + i;
$.ajax("https://testfunctionwebsite.azurewebsites.net/api/HttpTriggerCSharp2").done(function(a,b) {
var queryResult = a;
$("#ajaxResult").text("Result from api:" + queryResult);
});
$("#ajaxResult").text(result);
}
</script>
<div id="testDiv">
Hello functional world!
</div>
<div>
<button id="testButton">Get some values</button><br>
<div id="ajaxResult"></div>
</div>
</body>
</html>
您可以在以下位置试用:https ://testfunctionwebsite.azurewebsites.net/api/HttpTriggerCSharp1