Comments (15)
这个 API 感觉怪怪的,改成
var AV = require('avoscloud-sdk');
AV.use(require('leanengine'));
如何?
from leanengine-node-sdk.
也可以,那样的话 js-sdk 需要引入插件机制。
from leanengine-node-sdk.
插件机制好啊,一直想这样来着,其实 React Native 的支持应该也变成插件比较合理,需要用的引入对应的插件文件即可。
from leanengine-node-sdk.
只要让用户的项目依赖 leanengine 和 avoscloud-sdk (然和去除 leanengine 对 avoscloud-sdk 的依赖)就行了,这样在 leanengine 是可以和用户的代码访问到同一个 avoscloud-sdk 的,并不需要显式传入(除非要支持多个 AV 实例)。
from leanengine-node-sdk.
是可以 require 到,但是 require peer dependency 是一种合理的做法吗。
如果直接在 leanengine 中 require peer avoscloud-sdk 的话,那么 require('leanengine')
操作是有副作用的。上面说的不管是 leanengine 持有 AV 还是 AV use leanengine,都是用户主动去操作的。
from leanengine-node-sdk.
已有一些开源项目使用这样的结构,比如用 express 渲染 jade, 需要用户的项目依赖 express 和 jade, 然后 express 使用 jade.
有副作用这一点确实不是很好,但既然现在 AV 只有一个实例,那其实用户手动操作和自动操作没有什么区别了。按照之前的讨论,再加上正在进行的 disable current user, Node SDK 会逐渐减少对 JS SDK 的修改,只提供云引擎相关的功能。
from leanengine-node-sdk.
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.
Agreed。因为 leanengine 是需要对 leancloud-storage 进行配置的(并且看起来这部分依赖无法去除)。所以应该将 leanengine 看成是对 leancloud-storage 的封装。那样的话是应该直接指定为依赖。我觉得之所以会有指定版本的需求还是因为之前版本号没有控制好,遵循 semver 之后这个问题可能就没有那么严重了。
from leanengine-node-sdk.
确实没有太好的办法,毕竟 leanengine sdk 依赖了 js sdk。
from leanengine-node-sdk.
是否我们可以在 leanengine sdk 内部做个检测,如果没有 js sdk 则给出一个 warning。
参考 bootstrap
from leanengine-node-sdk.
现在的结构下,不会出现「没有 js sdk」。
from leanengine-node-sdk.
恩,可以考虑调整一下。。。
能够用户自定义 JS SDK 版本还是有好处的:
- 用户升级 JS SDK 快速,不需要依赖官方的 leanengine 发版;
- 用户能够更容易调试可能出现的 JS SDK 问题;
from leanengine-node-sdk.
现在看来 Node SDK 对 JS SDK 的依赖已经很少了,也许还是可以考虑改成 peerDependency
from leanengine-node-sdk.
没有更多意见的话就准备在 3.0 里改成 peerDependency 了
from leanengine-node-sdk.
已在 3.0.0-alpha.2 中实现 #103
from leanengine-node-sdk.
Related Issues (20)
- Node SDK 2.0 计划 HOT 7
- 支持async await 吗? HOT 4
- 对实例异常退出的情况增加告警邮件 HOT 1
- 调用本地云函数,返回的 Promise 一直处于 pending 状态 HOT 2
- 检查将 Node SDK 作为客户端使用时的 currentUser
- 我们的 Bug 给用户清晰的「请升级 SDK」提示 HOT 1
- web 实例图表里有不合适的数据 HOT 2
- 如何调用已经部署的云函数? HOT 1
- 升级云引擎 demo 的中间件到 v2.x 以上 HOT 1
- sdk调用云函数本地报错getSessionToken is not a function HOT 2
- 预备环境休眠报错提示为错误的 503 HOT 5
- AV.User.current() 不返回 null HOT 1
- Promise 写法的 beforeHook 没有正确地对 object 进行序列化 HOT 1
- AV.File not saving base64 HOT 5
- Node SDK 4.0 计划 HOT 3
- 在 RPC 请求中,没有正确地序列化数组中的非 Object 值 HOT 1
- 云引擎中设置 serverUrl 不起作用 HOT 2
- 云函数的 request object 提供更具体的类型
- CookieSessionOptions 缺少 maxAge 定义
- TypeScript Declaration File HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from leanengine-node-sdk.