我来自传统的后端Java/Spring
环境学习Angular 2 framework
,并且很难掌握许多基本概念.
我正在阅读使用TypeScript的Manning书Angular 2 Development,它说我需要HTTP-server
运行我的SAP'
s.这是为什么?
我以为Angular
在客户端机器上运行.那么服务器的功能到底是什么?如果我只是打开HTML
,Angular
不做它的魔力.
事实上,Angular应用程序假设使用HTTP协议进行访问,因此最好使用HTTP服务器进行开发.你将处于"相同的条件".此外,这可以防止出现一些限制和限制:
相对于域名的绝对链接.我的意思是,如果您尝试从域的根路径引用具有绝对路径的资源.这可能不适用于文件协议,因为它的根路径是文件系统的根文件夹
JavaScript和AJAX.JavaScript无法与file://
协议一起使用,根据浏览器,您可以使用某些安全限制.
有关这些问题的详细信息,请参阅以下链接:
https://developer.mozilla.org/en-US/Learn/Open_a_file_in_a_browser#Opening_a_local_file
https://github.com/mrdoob/three.js/wiki/How-to-run-things-locally
关于Web服务器的选择,静态Web服务器对于Angular应用程序来说已经足够了,为此目的有几个轻量级HTTP服务器:
http-server
- https://github.com/indexzero/http-server
lite-server
- https://github.com/johnpapa/lite-server
一个有趣的功能(lite-server
例如)包括实时重新加载.服务器会检测您何时更新某些内容(HTML,JavaScript,CSS)并自动在浏览器中重新加载相应的页面.这使您在实施应用程序时更有效率.
最后,如果同时实现客户端(Angular)和服务器端,这些部分应该在不同的服务器上执行(在开发环境中,它可以/应该在生产等其他环境中不同).我的意思是:
前端的静态HTTP服务器,仅为Angular应用程序提供元素.
后端的动态HTTP服务器,提供服务器端处理.你可以在这里使用你想要的技术(Node,Java,...)
由于这两个服务器,您必须启用CORS(跨源资源共享)以使Angular应用程序能够在服务器应用程序上执行AJAX请求.事实上,你不在同一个领域.当浏览器Origin
在请求中发送标头时,必须在服务器端配置以返回CORS标头.有关更多详细信息,您可以查看以下链接:
http://restlet.com/blog/2016/09/27/how-to-fix-cors-problems/
http://restlet.com/blog/2015/12/15/understanding-and-using-cors/
如果使用Angular的路由功能,另一件需要注意的事情是HTML5历史模式模拟了一些"真实"地址,但在这种情况下,您需要在Web服务器上进行一些配置以加载index.html(您的入口点文件)对应于每条路由的每个URL.有关更多详细信息,请参阅此答案:当我刷新我的网站时,我得到了404.这是使用Angular2和firebase.
最后要考虑的是为您的生产环境打包应用程序.您需要使应用程序高效(缩小元素,汇总JavaScript文件,预加载模板......).在这个级别,没有必要保留两个单独的服务器,Angular部分可以打包在服务器端应用程序中.在这种情况下,后者必须能够提供一些statis文件.
希望它对你有帮助,蒂埃里
如果它与AngularJS 1.3类似,它会使AJAX请求获取HTML模板,至少它需要一个真正的HTTP服务器.