当前位置: 首页 > news >正文

王牌网站做代理网络广告学心得体会

王牌网站做代理,网络广告学心得体会,免费制作手机网页,河北搜索引擎推广方法模块安装打包 npm install -g electron-forge electron-forge init my-project --templatevue npm start //进入目录启动 //打包成一个目录到out目录下#xff0c;注意这种打包一般用于调试#xff0c;并不是用于分发 npm run package //打出真正的分发包#xff0c;放在o…模块安装打包  npm install -g electron-forge electron-forge init my-project --templatevue npm start  //进入目录启动 //打包成一个目录到out目录下注意这种打包一般用于调试并不是用于分发 npm run package //打出真正的分发包放在out\make目录下 npm run make npx electron-forge/clilatest import npx create-electron-app my-app npm install mousetrap  //快捷键绑定库 npm install  worker_threads  //工作线程模块 npm install worker-loader  // npm init     //C项目目录下初始化项目 npm install --global --production windows-build-tools 快速体验 npm install -g electron-prebuilt   git clone https://github.com/electron/electron-quick-start cd electron-quick-start npm install npm start cnpm install electron-packager -g  scripts: {package:electron-packager . HelloWorld --platformwin32 --archx64 --iconcomputer.ico --out./out --asar --app-version0.0.1 --overwrite --ignorenode_modules   } npm run package   python %~dp0gyp_main.py %* JS调用C #include node.h #include v8.husing namespace v8;// 传入了两个参数args[0] 字符串args[1] 回调函数 void hello(const FunctionCallbackInfoValue args) {// 使用 HandleScope 来管理生命周期Isolate* isolate Isolate::GetCurrent();HandleScope scope(isolate);// 判断参数格式和格式if (args.Length() 2 || !args[0]-IsString()) {isolate-ThrowException(Exception::TypeError(String::NewFromUtf8(isolate, Wrong arguments)));return;}// callback, 使用Cast方法来转换LocalFunction callback LocalFunction::Cast(args[1]);LocalValue argv[1] {// 拼接StringString::Concat(LocalString::Cast(args[0]), String::NewFromUtf8(isolate, world))};// 调用回调, 参数: 当前上下文参数个数参数列表callback-Call(isolate-GetCurrentContext()-Global(), 1, argv); }// 相当于在 exports 对象中添加 { hello: hello } void init(LocalObject exports) {NODE_SET_METHOD(exports, hello, hello); }// 将 export 对象暴露出去 // 原型 NODE_MODULE(module_name, Initialize) NODE_MODULE(test, init);//方法暴露 void Method(const FunctionCallbackInfoValue args) {Isolate* isolate args.GetIsolate();args.GetReturnValue().Set(String::NewFromUtf8(isolate, world).ToLocalChecked()); }void Initialize(LocalObject exports) {NODE_SET_METHOD(exports, hello, Method); }NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize) extern C NODE_MODULE_EXPORT void NODE_MODULE_INITIALIZER(LocalObject exports,LocalValue module,LocalContext context) {/* Perform addon initialization steps here. */ }int main(int argc, char* argv[]) {// Create a stack-allocated handle scope. HandleScope handle_scope;// Create a new context. HandleContext context Context::New();// Enter the created context for compiling and // running the hello world script.Context::Scope context_scope(context);// Create a string containing the JavaScript source code. HandleString source String::New(Hello , World!);// Compile the source code. HandleScript script Script::Compile(source);// Run the script to get the result. HandleValue result script-Run();// Convert the result to an ASCII string and print it. String::AsciiValue ascii(result);printf(%s\n, *ascii);return 0; }//create accessor for string username global-SetAccessor(v8::String::New(user),userGetter,userSetter); //associates print on script to the Print function global-Set(v8::String::New(print), v8::FunctionTemplate::New(Print)); //注册类对象 HandleFunctionTemplate point_templ FunctionTemplate::New(); point_templ-SetClassName(String::New(Point)); HandleObjectTemplate point_proto point_templ-PrototypeTemplate(); point_proto-Set(method_a, FunctionTemplate::New(PointMethod_A)); point_proto-Set(method_b, FunctionTemplate::New(PointMethod_B)); //设置指针个数 HandleObjectTemplate point_inst point_templ-InstanceTemplate(); point_inst-SetInternalFieldCount(1); //创建实例 HandleFunction point_ctor point_templ-GetFunction(); LocalObject obj point_ctor-NewInstance(); obj-SetInternalField(0, External::New(p)); //获取类指针处理HandleValue PointMethod_A(const Arguments args)2.                {3.                    LocalObject self args.Holder();4.                    LocalExternal wrap LocalExternal::Cast(self-GetInternalField(0));5.                    void* ptr wrap-Value();6.                    static_castPoint*(ptr)-Function_A();7.                    return Integer::New(static_castPoint*(ptr)-x_);8.                }//向MakeWeak注册的callback. void CloudAppWeakReferenceCallback(PersistentValue object , void * param) { if (CloudApp* cloudapp static_castCloudApp*(param)) { delete cloudapp; } } //将C指针通过External保存为Persistent对象避免的指针被析构 HandleExternal MakeWeakCloudApp(void* parameter) { PersistentExternal persistentCloudApp PersistentExternal::New(External::New(parameter)); //MakeWeak非常重要当JS世界new一个CloudApp对象之后 //C也必须new一个对应的指针。 //JS对象析构之后必须想办法去析构C的指针可以通过MakeWeak来实现 //MakeWeak的主要目的是为了检测Persistent Handle除了当前Persistent //的唯一引用外没有其他的引用就可以析构这个Persistent Handle了 //同时调用MakeWeak的callback。这是我们可以再这个callback中delete //C指针 persistentCloudApp.MakeWeak(parameter, CloudAppWeakReferenceCallback); return persistentCloudApp; } void Print(const v8::FunctionCallbackInfov8::Value args) { bool first true; for (int i 0; i args.Length(); i) { v8::HandleScope handle_scope(args.GetIsolate()); if (first) { first false; } else { printf( ); } v8::String::Utf8Value str(args[i]); const char* cstr ToCString(str); printf(%s, cstr); const char* s_result print call succeed\n; v8::Localv8::String v_result v8::String::NewFromUtf8(args.GetIsolate(), s_result, v8::NewStringType::kNormal).ToLocalChecked(); args.GetReturnValue().Set(v_result); } printf(\n); fflush(stdout); } v8::Localv8::ObjectTemplate global v8::ObjectTemplate::New(isolate); // Bind the global print function to the C Print callback. global-Set( v8::String::NewFromUtf8(isolate, print, v8::NewStringType::kNormal) .ToLocalChecked(), v8::FunctionTemplate::New(isolate, Print)); LocalContext context v8::Context::New(isolate, NULL, global);Isolate *isolate args.GetIsolate(); LocalObject opts args[0]-ToObject(); LocalNumber mode opts-Get(String::NewFromUtf8(isolate, mode))-ToNumber(isolate); static void DeleteInstance(void* data) {// 将 data 转换为该类的实例并删除它。 } node::AddEnvironmentCleanupHook(DeleteInstance) //在销毁环境之后被删除 JS调用C函数就是通过FunctionTemplate和ObjectTemplate进行扩展的。 V8的External就是专门用来封装Wrap和解封(UnWrap)C指针的V8_EXPORT V8_INLINE v8::Handle v8::Local const v8::Arguments const v8::FunctionCallbackInfov8::Value   不定参数   LocalFunctionTemplate tpl FunctionTemplate::New(isolate); G String::NewFromUtf8Literal(isolate, isNull) String::Cast isolate-GetCurrentContext() NODE_SET_PROTOTYPE_METHOD(tpl, x, X); https://github.com/alibaba/jsni.git nodeqt const qt require(./lib/qt); const app new qt.QApplication(); const window new qt.QMainWindow(); const box new qt.QWidget(); box.setStyleSheet(background-color:red;); box.resize(300, 300); box.move(300, 300); box.setParent(window); window.resizeEvent((width, height) {console.log(Resized1, width, height);console.log(width, height); }); window.closeEvent(() {console.log(Closing); }); box.resizeEvent((width, height) {console.log(Resized2, width, height); }); box.mousePressEvent(() console.log(CLICKED!)); box.mouseReleaseEvent(() console.log(UNCLICKED!)); box.setMouseTracking(true); box.mouseMoveEvent((x, y) console.log(MOUSE MOVED! x: ${x} y: ${y})); box.enterEvent(() console.log(MOUSE ENTERED!)); box.leaveEvent(() console.log(MOUSE LEFT!)); const label new qt.QLabel(box); console.log(Size hint, label.sizeHint()); console.log(Height, label.height()); label.setText(span styledsawewwwwspan styleHello2/span/span); label.adjustSize(); const label2 new qt.QLabel(window); const pix new qt.QPixmap(); pix.load(/home/kusti8/Pictures/test_small.jpg); pix.scaled(300, 300, qt.AspectRatioMode.IgnoreAspectRatio); label2.setPixmap(pix); label2.adjustSize(); label2.setStyleSheet(background-color: red;); label2.move(300, 600); label2.setScaledContents(false); label2.setAlignment(qt.Alignment.AlignCenter); label2.show(); const lineedit new qt.QLineEdit(window); lineedit.move(100, 100); lineedit.textChangedEvent(text console.log(text changed, text)); lineedit.show(); const combobox new qt.QComboBox(window); combobox.currentTextChangedEvent(text console.log(New combo, text)); combobox.setEditable(true); combobox.addItem(Test1); combobox.addItem(Test2); combobox.addItem(Test3); box.show(); box.clear(); console.log(set parent); window.show(); console.log(set parent); app.aboutToQuitEvent(() console.log(Quitting)); console.log(Height, label.height()); console.log(qt.desktopSize()); app.exec();GitHub - arturadib/node-qt: C Qt bindings for Node.js mirrors_CoderPuppy/node-qt GitHub - anak10thn/node-qt5 GitHub - NickCis/nodeQt: Qt binding for Node GitHub - a7ul/mdview-nodegui: A Markdown editor in NodeGui GitHub - kusti8/node-qt-napi: Node.js bindinds for Qt5, using NAPI GitHub - nodegui/qode: DEPRECATED: Please see https://github.com/nodegui/qodejs instead GitHub - svalaskevicius/qtjs-generator: Qt API bindings generator for Node.js C 插件 | Node.js v22 文档 GitHub - nodegui/nodegui-starter: A starter repo for NodeGui projects GitHub - anak10thn/qhttpserver: HTTP server implementation for Qt based on node.js http parser GitHub - anak10thn/chrome-app-samples: Chrome Apps GitHub - magne4000/node-qtdatastream: Nodejs lib which can read/write Qt formatted Datastreams GitHub - fwestrom/qtort-microservices: A simple micro-services framework for Node.js. GitHub - ivan770/PiQture: Screenshot tool based on Electron GitHub - miskun/qtc-sdk-node: Qt Cloud Services SDK for Node.js v8: include/v8.h File Reference nodegyp node-gyp -j 8 configure node-gyp -j 8 build install: node-gyp -j 8 rebuild --archia32 install: node-gyp -j 8 rebuild --archx86 https://github.com/kusti8/node-qt-napi/releases/download/0.0.4/qt-v0.0.4-4-win32-x64.tar.gz 工程搭建方式 gyp文件样例 TortoiseGit bash使用 set PRJ_PATHE:\workspace\test\Web-Dev-For-Beginners\nodeqt TortoiseGitProc.exe /command:commit /path:%PRJ_PATH%\nodegyp /logmsgfile:%PRJ_PATH%\refModify.txt /bugid:1 /closeonend:2% TortoiseGitProc.exe /command:pull /path:%PRJ_PATH%\nodegyp /closeonend:2 TortoiseGitProc.exe /command:push /path:%PRJ_PATH%\nodegyp /closeonend:2 pause GitHub - electron/electron-api-demos: Explore the Electron APIsExplore the Electron APIs. Contribute to electron/electron-api-demos development by creating an account on GitHub.https://github.com/electron/electron-api-demosQuick Start | ElectronThis guide will step you through the process of creating a barebones Hello World app in Electron, similar to electron/electron-quick-start.https://electronjs.org/docs/tutorial/quick-starthttps://github.com/electron/electron-quick-starthttps://github.com/electron/electron-quick-start GitHub - qtoolkit/qtk: QTK 是一套基于HTML5 Canvas实现的, 专注于桌面/移动应用程序开发的框架。 https://github.com/sindresorhus/awesome-electron Introduction | Electron Electron 创作不易小小的支持一下吧
http://www.hkea.cn/news/14526203/

相关文章:

  • 人和做网站凤阳做网站
  • 小说网站seo排名怎么做酒店网站源码
  • 建设电子商务网站期末考试vs2013 手机网站开发
  • asp网站开发流程谷歌浏览器直接打开
  • 个人网站的建设目标网页设计学校网站
  • 网站建设主要考虑哪些因素版式设计模板
  • 地产网站建设公司织梦网站怎么把index.html去掉
  • 兰州网站设计厂家网站关键字排名提升工具
  • 做行业门户网站注意什么糗事百科 wordpress
  • 广告投放跟网站建设一样吗个人定制网站怎么做
  • 网站网页设计的组成连连跨境电商网站怎么做
  • 天津滨海新区天气预报seo简单优化
  • 族谱网站开发广州网络推广机构
  • 洛阳做公司网站微信小程序公众号开发
  • 江苏江都建设集团有限公司网站wordpress 好用的插件推荐
  • 服务器网站部署深圳的网站建设公司有哪些
  • 外贸营销型网站制作公司微网站 源码 免费
  • 做机械毕业设计哪个网站好运维工程师的前景如何
  • 美团做团购网站河南工程建设信息网官网
  • 企业网站备案流几天做网站的国标有哪些
  • 包头网站建设旅游景点网页设计作品
  • 黄冈做网站公司北京价格网
  • 长宁专业网站制作公司百度热搜榜排名
  • 方城企业网站制作哪家好网络服务器与个人计算机的区别
  • 什么软件可以做动漫视频网站wordpress文章首页显示
  • 自己创做网站我的网站搜索不到了
  • 电子商务网站规划与建设摘要三只松鼠网络营销方案
  • 网站建设哪个公司的好搜索引擎优化方法案例
  • 湖北德升建站网站需求分析怎么写
  • 长春网站设计价格网站建设人员工作计划