我正在尝试将MVC项目与EmberJS结合起来。我搜索了现有的问题,但我只是通过这些来到这里:我用ember new emberProject
创建了一些东西并编写了简单的模板,路线,模型,海市蜃楼等。然后我创建了一个MVC Web API并在控制器中创建了AppController写下这个:
public class AppController : Controller
{
// GET: App
public ActionResult Index()
{
return File(Server.MapPath("~/emberProject/dist/") + "index.html", "text/html");
}
}
并为索引编写路径:
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="/emberProject/dist/assets/vendor.css">
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
</div>
</body>
</html>
此后我该怎么办?我不应该在MVC项目上看到我的.hbs
和.js
文件吗?因为我不能。此外,现在我正在使用硬编码的虚拟数据。我需要从MVC获取数据,以便在我的ember项目中用作“模型”。我该怎么办?
感谢。
答案 0 :(得分:4)
强烈建议ember社区保持您的前端应用程序和API后端分离。如果您想使用SELECT f.flight_number, f.flight_date, f.airport, a.iata, a.iso3166 AS airport_country_code, max(air.icao)
FROM flights_database f
LEFT JOIN airlines air ON air.name = f.airline
JOIN airports a ON f.airport = a.airportNameClean
WHERE f.flight_date
BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 DAY) AND DATE_ADD(CURDATE() , INTERVAL 1 DAY)
GROUP by f.flight_date, f.airport, f.flight_number, a.iata
ORDER by f.airport, f.flight_number
因此,您只能使用asp.NET MVC应用程序来提供数据和静态资产。对于开发,您可以使用storage.googleapis.com/<bucket>/<object>
启动ember-cli
项目,以便所有API请求都代理到您的asp.NET后端。
然后你应该在你的asp.NET MVS项目中创建一个API来访问你的数据,我建议使用JSONAPI
,这是ember的默认实现。
然后,您只能使用ember-cli
构建客户端应用程序,而不使用asp.NET MVC,只能从后端获取数据。
只有在部署时才需要集成,您需要使用ember serve --proxy=http://your-asp.net_mvcproject/
来构建静态文件,并且作为后备,您始终提供ember ember-cli
文件,因此ember可以启动和使用ember路由器可以决定该做什么。
另一种方法是在你的asp.net MVC项目中集成ember。这绝对是可能的,但只有在您同时理解ember build --prod
构建管道和asp.NET项目结构时才应该这样做。如果你这样做,你必须自己做很多由index.html
处理的事情。
例如,您需要自己将ES6发送到ES5,并且您无法使用任何ember-cli
个插件。您也可能需要编译模板,并实现自定义解析器。