本文目录一览:
- 1、nodejs 还是python?
- 2、如何在Windows下的V8/Nodejs中实现ActiveXObject
- 3、如何检查我的NodeJS安装了哪个版本的v8
- 4、如何使用NPM在Windows 7上安装V8
nodejs 还是python?
这个关键取决你自身的基础条件和兴趣方向。
python是个比较成熟的跨平台的通用型脚本语言,有非常完善庞大的内置模块和第三方扩展模块。
python几乎什么都能干,但是自身性能较低。it自动化运维,网络爬虫,数据分析是优势的领域
node.js采用事件驱动、异步编程,为网络服务而设计
"node.js 是服务器端的 javascript 运行环境,它具有无阻塞(non-blocking)和事件驱动(event-driven)等的特色,node.js 采用 v8 引擎,同样,node.js 实现了类似 apache 和 nginx 的web服务,让你可以通过它来搭建基于 javascript 的 web app。"-windows安装v8js
如何在Windows下的V8/Nodejs中实现ActiveXObject
1. 网上找的实现方法
网上找了半天,没有一个实现的解决方案。那些大侠们的江湖可能都是Linux,从来不操心Windows的。找到唯一靠谱的解决方案如下:
参见1:用nodejs访问ActiveX对象,以操作Access数据库为例。这个总体上来说是利用Windows自带的脚本解释器来调用ActiveXObject,然后将处理结果返回给主进程。由于是两个进程之间的数据交换,也就只能局限于类文本数据;而涉及到动态对象的交换,就无能为力。但是,作为处理中间交换结果的简单小型的解决方案来说,还是可以的。-windows安装v8js
参见2:我是如何用 V8 脚本引擎替换JScript的。这个绝对是最彻底的解决方案,而且成文时间比较早,都在2009年。可惜作者懒了,以后就没有下文了。即便找到作者的工作室雨寒工作室主要原创作品预览,也是需要等待发布。-windows安装v8js
然后然后就只能靠自己了。
2. 实现ActiveXObject的几种方法
其实以前用IE自带的JScript引擎,实现自己的应用程序和js相互调用,为自己的应用程序添加脚本支持,已经知道JScript的原理:一切皆组件,一切皆IDispatch和IDispatchEx。但是V8绝对不会支持微软的COM组件的,也就谈不上去实现Jscript中的大门ActiveXObject了;这也宣告利用V8时,不能方便简单的使用微软的组件。真是可惜啊!-windows安装v8js
其实让V8、NodeJS在Windows下来支持微软的组件一定可行的。动手实现之前想的三个方法是:
要用哪个组件,就将该组件动态转换为JS对象。
当然可以提供应用工具实现,其实就是遍历一个组件的接口类型库信息
难点在于方对象和子对象的层层连接
速度会比较快,因为事先已经将所有的方法或属性固定已知了,都省去根据名称找方法一步
比较浪费。如果有时只想调用组件中的几个方法而已的话
想在JS层次上拦截对方法或属性的调用,统一变成调用IDispatch::Invoke。
利用JS的AOP之类技术等等;或者eval、apply等函数
AOP大多数都是对已知对象方法属性的代理;但是组件引入在js中却是未知属性和方法,只有在调用时转成Invoke
如何在V8引擎中拦截脚本的属性或方法调用,转换为IDispatch::Invoke调用。
利用拦截器可以实现对所有方法和属性的访问,并转到IDispatch::Invoke这个函数中
要处理V8::Value和VARIANT的数据之间相互转换
对于对象的属性又是对象这种情况一定要处理好
注意优化,避免内存泄露
这几种方法,第一种知道可行,但是没有做;第二种宣告失败;第三种历经波折多次柳暗花明和死胡同交相辉映,但大抵宣告成功还有点瑕疵。
3. 如何实现ActiveXObject的一种最简单方法
还有两个细节没有处理明白:
V8的String如何转换为BSTR,总是失败
NodeJS的addon插件,居然存在内存泄露。压根就没有释放掉ObjectWrap。自带的例子也如是!
解决完这两个bug后再放上代码。
如何检查我的NodeJS安装了哪个版本的v8
如图,前者是node版本号,后者是node解析引擎v8版本号
node -p process.versions.v8
另外,补充一下,chrome查看v8版本号
还有就说想说 ,为啥楼上那位,不看题,就瞎复制粘贴呢,严重怀疑你懂不懂
如何使用NPM在Windows 7上安装V8
D:\Projects\Projects\MY_Prjct3\MY_Prjctnpm install v8-profiler
npm http GET CodeGo.net
npm http 304 CodeGo.net
v8-profiler@3.6.2-1 install D:\Projects\Projects\MY_Prjct3\MY_Prjct\node_modules\
v8-profiler
node-gyp rebuild
D:\Projects\Projects\MY_Prjct3\MY_Prjct\node_modules\v8-profilernode "C:\Program F
iles\nodejs\node_modules\npm\bin\node-gyp-bin\\..\..\node_modules\node-gyp\bin\n
ode-gyp.js" rebuild
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.InvalidPlatform
.Targets(23,7): error MSB8007: The Platform for project 'profiler.vcxproj' is i
nvalid. Platform='x64'. You may be seeing this message because you are trying
to build a project without a solution file, and have specified a non-default Pl
atform that doesn't exist for this project. [D:\Projects\Projects\MY_Prjct3\My_Prj
ct\node_modules\v8-profiler\build\profiler.vcxproj]
gyp ERR! build error
gyp ERR! stack Error: `C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe
` failed with exit code: 1
gyp ERR! stack at ChildProcess.onExit (C:\Program Files\nodejs\node_modules\
npm\node_modules\node-gyp\lib\build.js:236:23)
gyp ERR! stack at ChildProcess.EventEmitter.emit (events.js:99:17)
gyp ERR! stack at Process._handle.onexit (child_process.js:678:10)
gyp ERR! System Windows_NT 6.1.7601
gyp ERR! command "node" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modu
les\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd D:\Projects\Projects\MY_Prjct3\MY_Prjct\node_modules\v8-profiler
gyp ERR! node -v v0.8.15
gyp ERR! node-gyp -v v0.7.1
gyp ERR! not ok
npm ERR! v8-profiler@3.6.2-1 install: `node-gyp rebuild`
npm ERR! `cmd "/c" "node-gyp rebuild"` failed with 1
npm ERR!
npm ERR! Failed at the v8-profiler@3.6.2-1 install script.
npm ERR! This is most likely a problem with the v8-profiler package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! node-gyp rebuild
npm ERR! You can get their info via:
npm ERR! npm owner ls v8-profiler
npm ERR! There is likely additional logging output above.
npm ERR! System Windows_NT 6.1.7601
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod
ejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "v8-profiler"
npm ERR! cwd D:\Projects\Projects\MY_Prjct3\MY_Prjct
npm ERR! node -v v0.8.15
npm ERR! npm -v 1.1.66
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! D:\Projects\Projects\MY_Prjct3\MY_Prjct\npm-debug.log
npm ERR! not ok code 0
文件:NPM-debug.log中0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\\\node.exe',
1 verbose cli 'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli 'install',
1 verbose cli 'v8-profiler' ]
2 info using npm@1.1.66
3 info using node@v0.8.15
4 verbose node symlink C:\Program Files\nodejs\\node.exe
5 verbose read json D:\Projects\Projects\MY_Prjct3\MY_Prjct3\package.json
6 verbose read json D:\Projects\Projects\MY_Prjct3\MY_Prjct3\node_modules\express\package.json
7 verbose read json D:\Projects\Projects\MY_Prjct3\MY_Prjct3\node_modules\hbs\package.json
8 verbose read json D:\Projects\Projects\MY_Prjct3\MY_Prjct3\node_modules\mongodb\package.json
9 verbose read json D:\Projects\Projects\MY_Prjct3\MY_Prjct3\node_modules\mongoose\package.json
10 verbose read json D:\Projects\Projects\MY_Prjct3\MY_Prjct3\node_modules\node-inspector\package.json-windows安装v8js
11 verbose read json D:\Projects\Projects\MY_Prjct3\MY_Prjct3\package.json
12 verbose cache add [ 'v8-profiler', null ]
13 silly cache add name=undefined spec="v8-profiler" args=["v8-profiler",null]
14 verbose parsed url { pathname: 'v8-profiler',
14 verbose parsed url path: 'v8-profiler',
14 verbose parsed url href: 'v8-profiler' }
15 silly lockFile a12f389f-v8-profiler v8-profiler
16 verbose lock v8-profiler C:\Users\Amol.Kulkarni\AppData\Roaming\npm-cache\a12f389f-v8-profiler.lock-windows安装v8js
17 silly lockFile a12f389f-v8-profiler v8-profiler
18 verbose addNamed [ 'v8-profiler', '' ]
19 verbose addNamed [ null, '' ]
20 silly lockFile f875d38f-v8-profiler v8-profiler@
21 verbose lock v8-profiler@ C:\Users\Amol.Kulkarni\AppData\Roaming\npm-cache\f875d38f-v8-profiler.lock-windows安装v8js
22 silly addNameRange { name: 'v8-profiler', range: '', hasData: false }
23 verbose url raw v8-profiler
24 verbose url resolving [ ' CodeGo.net './v8-profiler' ]
25 verbose url resolved CodeGo.net
26 info trying registry request attempt 1 at 16:54:05
27 verbose etag "ET10KXXLUBJGCCEB13YK5N04L"