java - 前后端分离的一些疑问
PHPz
PHPz 2017-04-17 15:48:52
[Java讨论组]

Hi,各位大神。我如果要在公司内部实践前后端分离的架构有什么要注意的。目前公司后台语言用的是java c++ 可以提供json jsonp格式的接口

前端开发都不会node.js 那么前端开发完的代码是放到nginx里面可以吗?有什么弊端吗?

多谢各位大神了。

PHPz
PHPz

学习是最好的投资!

全部回复(3)
天蓬老师

目前比较前沿的前后端分离技术是前端负责controller层和view层,前提是前端的同学会使用nodejs,

既然题主公司的前端不会nodejs的话。 那只能用MVC模式(也是目前用的最多,包括taobao,支付宝都在用)去开发。在这种协作模式下,前端的同学可以把写好的页面拿给后端的同学,后端的同学再在页面里面套上数据,然后发布。

楼主可以参考下《Web 研发模式演变》这篇博文,就能对前后端分离的前世今生有个大致的了解:
https://github.com/lifesinger/lifesinger.github.io/issues/184

PHP中文网

前后分离开发环境和部署

nginx代理

你的静态资源在 ~/static/目录下,而你的后端服务端口是8080,你可以在nginx下配置如下

    #静态文件,请求静态文件代理带`static`目录下
    location ~ ^/(images|javascript|js|css|flash|media|static)/ {
        root ~/static;
    }
    #接口代理到api下
    location ~ ^/(api)/ {
        root localhost:8080/api;
    }

1024,楼主点赞一生平安。

node代理

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就好了。

PHP中文网

前端用ajax是个好办法,但要解决跨域问题。其实我觉得前端可以用php。。。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号