Giter Site home page Giter Site logo

Comments (15)

aisk avatar aisk commented on June 7, 2024

这个 API 感觉怪怪的,改成

var AV = require('avoscloud-sdk');
AV.use(require('leanengine'));

如何?

from leanengine-node-sdk.

leeyeh avatar leeyeh commented on June 7, 2024

也可以,那样的话 js-sdk 需要引入插件机制。

from leanengine-node-sdk.

wangxiao avatar wangxiao commented on June 7, 2024

插件机制好啊,一直想这样来着,其实 React Native 的支持应该也变成插件比较合理,需要用的引入对应的插件文件即可。

from leanengine-node-sdk.

jysperm avatar jysperm commented on June 7, 2024

只要让用户的项目依赖 leanengine 和 avoscloud-sdk (然和去除 leanengine 对 avoscloud-sdk 的依赖)就行了,这样在 leanengine 是可以和用户的代码访问到同一个 avoscloud-sdk 的,并不需要显式传入(除非要支持多个 AV 实例)。

from leanengine-node-sdk.

leeyeh avatar leeyeh commented on June 7, 2024

是可以 require 到,但是 require peer dependency 是一种合理的做法吗。

如果直接在 leanengine 中 require peer avoscloud-sdk 的话,那么 require('leanengine') 操作是有副作用的。上面说的不管是 leanengine 持有 AV 还是 AV use leanengine,都是用户主动去操作的。

from leanengine-node-sdk.

jysperm avatar jysperm commented on June 7, 2024

已有一些开源项目使用这样的结构,比如用 express 渲染 jade, 需要用户的项目依赖 express 和 jade, 然后 express 使用 jade.

有副作用这一点确实不是很好,但既然现在 AV 只有一个实例,那其实用户手动操作和自动操作没有什么区别了。按照之前的讨论,再加上正在进行的 disable current user, Node SDK 会逐渐减少对 JS SDK 的修改,只提供云引擎相关的功能。

from leanengine-node-sdk.

jysperm avatar jysperm commented on June 7, 2024

https://nodejs.org/en/blog/npm/peer-dependencies/

按照这篇文章的介绍, peerDependencies 主要用于「框架」和「插件」之间的约束,在这种情况下,插件是不会直接使用框架的,因此才不作为 dependencies 而是 peerDependencies 的;而 Node SDK 实际上是会直接使用 JS SDK 的,因此不适合作为 peerDependencies, 要求一个更严格的版本也是合理的。

如果用户希望指定 JS SDK 的版本可以考虑用 https://docs.npmjs.com/cli/shrinkwrap 虽然很难用,不过这种情况下应该并不多(一般是新版本有一个 Bug,希望退回到旧版本)。

from leanengine-node-sdk.

leeyeh avatar leeyeh commented on June 7, 2024

Agreed。因为 leanengine 是需要对 leancloud-storage 进行配置的(并且看起来这部分依赖无法去除)。所以应该将 leanengine 看成是对 leancloud-storage 的封装。那样的话是应该直接指定为依赖。我觉得之所以会有指定版本的需求还是因为之前版本号没有控制好,遵循 semver 之后这个问题可能就没有那么严重了。

from leanengine-node-sdk.

wangxiao avatar wangxiao commented on June 7, 2024

确实没有太好的办法,毕竟 leanengine sdk 依赖了 js sdk。

from leanengine-node-sdk.

wangxiao avatar wangxiao commented on June 7, 2024

是否我们可以在 leanengine sdk 内部做个检测,如果没有 js sdk 则给出一个 warning。

参考 bootstrap

image

from leanengine-node-sdk.

leeyeh avatar leeyeh commented on June 7, 2024

现在的结构下,不会出现「没有 js sdk」。

from leanengine-node-sdk.

wangxiao avatar wangxiao commented on June 7, 2024

恩,可以考虑调整一下。。。

能够用户自定义 JS SDK 版本还是有好处的:

  • 用户升级 JS SDK 快速,不需要依赖官方的 leanengine 发版;
  • 用户能够更容易调试可能出现的 JS SDK 问题;

from leanengine-node-sdk.

jysperm avatar jysperm commented on June 7, 2024

现在看来 Node SDK 对 JS SDK 的依赖已经很少了,也许还是可以考虑改成 peerDependency

from leanengine-node-sdk.

jysperm avatar jysperm commented on June 7, 2024

没有更多意见的话就准备在 3.0 里改成 peerDependency 了

from leanengine-node-sdk.

jysperm avatar jysperm commented on June 7, 2024

已在 3.0.0-alpha.2 中实现 #103

from leanengine-node-sdk.

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.