Code Monkey home page Code Monkey logo

Comments (9)

windy avatar windy commented on June 11, 2024

看看 @saberma 有什么见解没?

from 19wu.

saberma avatar saberma commented on June 11, 2024

@nightire 我也一直探索前后端如何高效(无缝)协作的问题,我们以后可以多点讨论这个问题。

前端产出(html,css,image)==> 后端实现为(view,controller,model),由于前后使用的源文件都不一样,如果前端持续变动,并与后端同步这个过程就相当麻烦。

我记得 Java 领域有一个框架(JBoss Seam?)试图解决这个问题,原理就是前端通过专用的工具生成 html,后端不进行改动,包括里面测试用的占位记录也不改,而直接使用标记技术改为实际的动态记录。

但我更倾向于前端学习一些后端的技术,能做服务跑起来,就能看到效果进行修改了。Rails 在这方面非常有优势,图片压缩和sprite,js脚本、css样式的可编程化及合并压缩,都极大地方便了前端。我看了一下 yeoman 里的介绍和视频,里面的功能 rails 都可以做,只是要借助不同的 generator 插件去实现,没有像 yeoman 整合在一起。

BTW,你提到的线上活动如果是做 Ruby China Clone,应该是为了演示方便才那样 c/p 的。

from 19wu.

nightire avatar nightire commented on June 11, 2024

@saberma 多谢你的回答,看来全方位提升自己的技术能力才是正途,这样一来我对学习Rails的渴望就更加迫切了,一开始我只是处于习惯,很不喜欢把Prototype性质的前端代码直接写进views当中去,这也算是之前工作遗留下来的习惯吧。有的时候想想是很为难,知道了Rails的种种便利之处,就像运用到实际工作当中去,可是看看混乱的Java项目结构……真是头疼啊!

Anyway,现在我对参与这个开源项目的信心和积极性都大大增强了,如果可以的话我想参与到前端代码的编写工作中去,我对自己在HTML/CSS上的造诣是很有信心的,Spine.js虽然还未用过,但Javascript也是我的强项,应该问题不大。借此机会我也可以好好提高自己的Rails开发能力。

现在我唯一的担忧(或许也是杞人忧天)就是随着众多前端工程师的加入,由于每个人对语义化结构在理解和认知上的差异,造成views上混乱的改动和疲于应付的fix(我的现实工作就是这样悲催),会给Code Review造成非常大的工作量。不过反过来想想,这也未必全是坏处,百花齐放大家才能对此有更深入的学习和掌握吧。(就是苦了代码审核的筒子们了)

from 19wu.

bigxiang avatar bigxiang commented on June 11, 2024

我们的方式是先设计出html,css和js,然后将页面上的元素分类汇总写成helper,如果和form有关的就自定义formbuilder,在view上由其他程序员引用的时候基本上不需要接触html,css,image这些东西,我们在做企业应用的时候页面风格比较单一,还是比较容易实现的,可能网站的项目个性化的页面比较多,需要定义的helper和formbuilder比较复杂,但我觉得做为一个项目,总是会有可以合并的东西。这样页面修改的时候很大程度可以减少混乱和重复劳动,效果还不错,就是对前端程序员的要求比较高了,个人意见,仅供参考。。。。

from 19wu.

lufeihaidao avatar lufeihaidao commented on June 11, 2024

前端用 js 的 MVC 框架如何? 把后端的数据传到 js 的 model 层,日后后端改动只要改前端的 model 层就好了?之前看过一个 js 的 MVC (ember.js)实现不过不够深入

from 19wu.

nightire avatar nightire commented on June 11, 2024

@lufeihaidao 你所说的仅仅是JS部分,@saberma 已经计划使用spine作为前端的MVC框架了。我在这里重点讨论的是页面的开发与后端的整合。当然,不去管静态的HTML + CSS,直接从JS模板开始也是可行的,但对于前端开发者的要求就更高了,特别是多人参与协作的时候。

from 19wu.

xiaods avatar xiaods commented on June 11, 2024

@nightire 你开启的这个话题让我挺敢兴趣。我结合自己在团队开发中的经验来讲讲,大家切磋一下。

我们公司当前的主力开发语言是Java,而我所处的项目组里只有我一个纯前端,经过一年多的开发实践之后,最最困扰我> 的事情就是如何将前端开发的过程无缝接入到整体开发流程当中去?

答:最直接的办法是学会后端模板的语法,解放后端代替前端做的工作。作为前端工程师,你设计的HTML,CSS,JS在设计完之后如果只停留在prototype时,就把控制代码的权利交给了后端,如果后端技术不过硬,一定会破坏你的代码质量的。我开始也怀疑交前端工程师学后端的模板是否可行,但坚持下来后发现效果不错。这样权责也清晰了,比如,前端写一个特效想直接加到项目代码里,在本地git fetch代码下来后把开发环境(开发可以帮忙搭建)搭建出来,一定是可以把前端的代码成果直接加入到项目代码中的。所以一个笑话时,前端工程师说“在我们这里干活,还要学git,学python,学java。哪天都学会了,你们就可以下班了。”

当然,我自己的理解是,造成我现在这种困惑的主因就是在我的团队里,前后端的”交集“太少,我对Java非常不了解,而>且也厌恶看到Java纷繁复杂的结构;而Java工程师对前端的认知又极差,经常把HTML/CSS/JS改的一塌糊涂。是不是在各位高手看来,如果前后端偏科不严重的话,这样的问题就不再是问题了呢?

答:不要对任何语言有反感,要学会欣赏。你可以换位想Java工程师是否会厌恶HTML/CSS/JS呢。这和前后端偏科一点没关系。你的目的是想做的更好,更专业,和编程语言一点关系没有。积极想办法拥抱变化,提出可行的解决办法,就能磨练出一套神技。

于是在加入这个开源项目的时候我就想和众多前端们探讨一下如何优雅的实现前后端无缝集成?想听听和了解你们大家的方式和建议。

答:无缝集成,我的理解就是后端会前端,前端会后端。但大家是在协作,一定对技术的见解有差异,如果你在项目组里不注意这样的细节问题,就会让代码无法推进。我在最近的nodejs项目中,就空格是4个还是2个,大家都会争着不休,因为这些开发可能都是屌丝(开个玩笑,大家关系很好),遇到这样的问题,停下来,把基本的规矩订一下,要包容,也要快(这是重点),拍板让一个人决定。当我们发现之前的决定确实不太理想的时候,加一个task就有人去搞定,应为大家都知道是啥原因。

from 19wu.

nightire avatar nightire commented on June 11, 2024

@xiaods 感谢你的回复,深表赞同!

你说“后端会前端,前端会后端”,这的确是一种理想状态。或许在你的公司和团队里是幸运的,可以无限接近这种状态;可我则恰恰相反。我是半路加入我们公司现在的这个项目的,其原因是之前(没有专职前端的时候)做的前端有点惨不忍睹,所以你可以想象一个空降兵加入之后想要融入的难度:我有心学Java模板,工程师们要么忙没空理你,要么就不是那么信任你,怕你搞坏了;我也有心请他们多学学HTML/CSS,不至于连很基本的东西都改得乱七八糟,但他们还是要么忙,要么……总之原因多多,让你觉得没有话语权简直是寸步难行。

有点偏题了,事实上你说的都是对的,我说的这些都是我的原因,和我们想要讨论的主题关系不大。我原以为是我没有掌握更好的协作技术和方式,但现在看来似乎还是人的因素更大一些。是否可以这样看待:前后端的无缝集成,人的影响远比技术的要大。

from 19wu.

xiaods avatar xiaods commented on June 11, 2024

@nightire 规划好自己的职场生涯,不必为客观因素所左右,做最好的自己。

from 19wu.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.