Hi,各位大神。我如果要在公司内部实践前后端分离的架构有什么要注意的。目前公司后台语言用的是java c++ 可以提供json jsonp格式的接口
前端开发都不会node.js 那么前端开发完的代码是放到nginx里面可以吗?有什么弊端吗?
多谢各位大神了。
Hi,各位大神。我如果要在公司内部实践前后端分离的架构有什么要注意的。目前公司后台语言用的是java c++ 可以提供json jsonp格式的接口
前端开发都不会node.js 那么前端开发完的代码是放到nginx里面可以吗?有什么弊端吗?
多谢各位大神了。
你的静态资源在 ~/static/
目录下,而你的后端服务端口是8080,你可以在nginx下配置如下
#静态文件,请求静态文件代理带`static`目录下
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
root ~/static;
}
#接口代理到api下
location ~ ^/(api)/ {
root localhost:8080/api;
}
1024,楼主点赞一生平安。
node的代理有多种选择方式,我贴个gulp的
var gulp = require('gulp');
var connect = require('gulp-connect');
var proxy = require('proxy-middleware');
var url = require('url');
gulp.task('connect', function () {
connect.server({
root: './',
port: 3000,
middleware: function (connect, opt) {
var proxyOptions = url.parse('http://localhost:8080/api/');
proxyOptions.route = '/api/';
return [
proxy(proxyOptions)
]
}
})
});
1024,楼主点赞一生平安。
前后分离的本意是把mvc的v完全交给前端去打理,不在依赖后台模板引擎,这样就可以脱离后台的环境进行前端的开发,毕竟后台的开发环境搭建是很麻烦的(心力交瘁),有时候后端人员在你的机子上还搭不起来呢(坑爹)。第二点是不在依赖后台的数据进行开发,可以用请求json文件路径或者用mock进行接口数据模拟开发。
那么如何进行前后端分离呢?
一,前端用html,通过ajax请求数据,用nginx起服务做代理解决跨域问题,但是你没有看到过大网站是用这种方式的,为什么呢?因为这样对seo不友好,也有很大的安全问题。第二种前后分离是前端使用node的服务,页面用node的模版引擎,接口用node去请求,这样是前后分离最完美,最舒服的方式,但是大网站为什么不采取这种方式呢?原来啊,node解决了seo问题,但是并没有解决运维的问题,运维对数据的监控,对机器的部署,对node服务的监控还有没成熟的方案和node的性能和处理业务的能力还是远远低于java的。三,那么大公司网站是怎么前后分离的呢?基本都是前端写好html让后台去套数据,虽然有了node构建工程化,可以模拟java的模板,但是还是不够完美的,前后端还是会有很大的沟通成本,coding也不会太舒服的。希望有一天node崛起,代替java就好了。
15 回答8.4k 阅读
5 回答4.8k 阅读✓ 已解决
8 回答6.2k 阅读
4 回答2.4k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
目前比较前沿的前后端分离技术是前端负责controller层和view层,前提是前端的同学会使用nodejs,
既然题主公司的前端不会nodejs的话。 那只能用MVC模式(也是目前用的最多,包括taobao,支付宝都在用)去开发。在这种协作模式下,前端的同学可以把写好的页面拿给后端的同学,后端的同学再在页面里面套上数据,然后发布。
楼主可以参考下《Web 研发模式演变》这篇博文,就能对前后端分离的前世今生有个大致的了解:
https://github.com/lifesinger/lifesinger.github.io/issues/184