美文网首页
Node前后端一体化开发

Node前后端一体化开发

作者: 王浩然5555 | 来源:发表于2020-12-24 21:01 被阅读0次

    项目介绍

    中后台项目中,带有Node的项目,我们总是维护两个js项目:Node项目+View项目
    两者之间通过Api地址链接

    image
    新的一体化应用,通过特殊的service作用域,可以将两者代码写在一起。所有在__service__内部的代码都会在服务器执行

    使用lix一体化开发,过去我们需要在两个项目里维护代码,现在可以前后端js代码写在一起。

    image

    所有在__service__内部的代码都会在服务器端执行

    image

    实现方式

    通过webpack插件,将源码,提取到两个项目中


    image

    开发模式的改变

    1、没有API

    我们不在需要api,连http的路径都是随机的,开发过程基于函数,为了方便调试lix做了一个改动,就是service内部的代码如果有console.log,虽然它是在服务器端执行,但是它会输出到浏览器端的控制台里,统一了了两端的调试。

    image
    我们再也不用需要打点日志的系统了,方便了日常和预发环境的调试。

    2、后端逻辑复用

    如果后端某些逻辑是复用逻辑那么lix如何开发呢?过去后端的复用是基于api地址的复用,所有页面使用一个http地址。那么lix如何处理复用呢?
    答案是基于函数


    image

    我举了一个例子,有一个常用的删除功能,那么我们提取一个函数,函数里面有远端调用。所有使用方,调用这个函数即可。用这种方式,我们很方便的把跟这个事件相关的前后端逻辑,都封装到里面,我们重新组织了复用,我们的复用是基于前后端一体的复用

    3、作用域

    因为service内部的执行是物理隔离的,所以不要试图通过作用域链获取外部的变量,例如这样:

    image
    这样服务端执行的时候,会报错获取不到变量,所有要传递的数据,通过参数传递,例如这样映射:
    image

    4、上下文

    服务器端执行的部分需要上下文,lix开发方式,通过this对象来绑定所有要执行的变量和方法,例如这样:


    image

    上下文变量,this.user和上下文方法this.runSql(),过去node开发中的中间件,都需要用代码来代替,例如例子中的this.user.type==='admin',代表管理员用户。

    上下文的扩展,主要通过扩展this对象来实现,当然也可以继续使用require方法引用基础包。但是官方并不建议这样做。

    那么我的项目如何改造才能使用lix的一体化开发方式呢。首先要求你的项目有一个伴随的Node项目,最好是midway、ice这样的既有node又有web的框架。

    使用一体化开发,能够加快开发进度,是一种优秀的全栈开发实践。随着使用可以发现,对整个项目的代码层次来讲更适合开发者的阅读,代码更整齐。
    结合分布式开发框架,可以拆分项目。

    相关文章

      网友评论

          本文标题:Node前后端一体化开发

          本文链接:https://www.haomeiwen.com/subject/hmlvnktx.html