java - 前后端分离的一些疑问

 我家在波力牧场 发布于 2022-11-04 10:35

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

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

多谢各位大神了。

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

    2022-11-12 01:43 回答
  • 前后分离开发环境和部署

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

    2022-11-12 01:43 回答
  • 目前比较前沿的前后端分离技术是前端负责controller层和view层,前提是前端的同学会使用nodejs,

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

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

    2022-11-12 01:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有