찾다

 >  Q&A  >  본문

php不使用模版,怎么实现前端和后端人员的协作开发?

如题:
模版的初衷是:代码与页面的分离。但实际开发过程中, 模版文件页面元素要嵌入大量的变量,以及同时处理if/else、for each等处理逻辑,比如smarty模版。
对于这种模版文件,模版语言和html语言混合在一起,结构混乱、逻辑与布局混杂,既不利于编辑制作,也不利于调试排错。同时还要增加前端人员的学习压力(例如要学习smarty)。

理想的模式下,前端只负责展示和交互(html/css/js),后端只负责提供数据(php)。

怎么实现这种理想模式?

PHP中文网PHP中文网2774일 전354

모든 응답(6)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-04-10 15:06:31

    今天刚看到一个地方说,可以使用JQuery,前端所有数据通过JQuery的Ajax进行获取数据,以及进行前后端数据的交互。

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-10 15:06:31

    后端输出json,前端处理数据

    用这个模式写过一些东西,希望有帮助

    博客 http://i.mouto.org/
    博客 http://mouto.org/

    讨论版 http://za2.org/

    电台 http://itorr.sinaapp.com/fm/
    电台 http://moe.re/fm

    个人吐槽记录 http://x.mouto.org/

    照片社区 http://dev.vscam.co/


    2015-2-20: ......这么多从这里来路的访问为什么不慷慨下鼠标给个赞!!!!!!! T_T

    회신하다
    0
  • 黄舟

    黄舟2017-04-10 15:06:31

    楼上正解,后台使用json传送数据 前端使用ajax接收。

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-10 15:06:31

    • 使用JSON
    • noBackend

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-10 15:06:31

    我先谈谈我的观点。

    PHP最开始最初的嵌入HTML中, 后来模板盛行(如Smarty), 再到后来的又抛弃模板(使用用输出)或轻量级模板(如Laravel的Blade模板引擎)。但前后台代码始终没有做到完全分离。作为Web开发的神级架构MVC, 有的时候让人搞不清楚业务代码究竟应该写在哪, 所谓的视图就是套着php锁链的HTML, 而Model大多数是一个继承于ORM的子类。这样的模式, 后端开发人员仍要处理HTML代码。就算是一个人在写前后端, 也要不断的切换思维,徘徊于业务逻辑和View之间, 实在是很痛苦。

    单纯的后端只输出JSON, 前端处理JSON并显示, 确实可以做到前后端的分离。但是没有条条框框束缚的开发模式,工程很容易随着工程量的增加或代码的不规范而陷入泥沼。

    我现在十分推崇纯粹REST后端 + AngularJS(REST)前端的架构。纯粹REST后端, 完全抛弃的View,并且可以凭借单一后端支持主流的应用场景: App, 浏览器, Web API,最主要的是有那么一套规范或标准实现去约束你,后端人员只需考虑如何更rest,更好的写易于使用的API就好了。而AngularJS从REST后端手中接过大棒,可以轻易的实现一个很优雅的前端架构。

    再辅以node.js,单元测试,coffee, sass之流 .... 想不爽都难

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-10 15:06:31

    模板的實質是 placeholder。你連 placeholder 都不寫,計算機怎麼知道什麼是可變的什麼不可變?結果至多是把模板邏輯挪到代碼里,然後代碼高度依賴 html 結構。。。回到石器時代。。。模板從有 if-else 開始就跑偏了,越來越想媲美一個通用語言,越來越複雜。

    或者把模板啥的一股腦推給前端,後端只做 API,但這樣只是責任轉移了,前端依舊不能專心負責展示和交互。

    其實後端應該分兩類,一類負責核心應用,一類負責模板
    HTML CSS 依舊叫前端負責

    前後端的分法本來就有些欠缺,缺少一個中間層。

    只有這樣,才有可能做到:

    前端只负责展示和交互(html/css/js),后端只负责提供数据(php)。

    因爲前後端銜接的任務交給中間層了~

    회신하다
    0
  • 취소회신하다