Electron qt开发教程

Electron qt开发教程

码农世界 2024-06-17 后端 87 次浏览 0个评论
模块安装打包 

npm install -g electron-forge

electron-forge init my-project --template=vue

npm start  //进入目录启动

//打包成一个目录到out目录下,注意这种打包一般用于调试,并不是用于分发

npm run package

//打出真正的分发包,放在out\make目录下

npm run make

npx @electron-forge/cli@latest 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

electron 将pc端(vue)页面打包为桌面端应用-CSDN博客
快速体验

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 --platform=win32 --arch=x64 --icon=computer.ico --out=./out --asar --app-version=0.0.1 --overwrite --ignore=node_modules"

  }

npm run package

 

GitHub - electron/electron-api-demos: Explore the Electron APIs

@python "%~dp0gyp_main.py" %*

JS调用C++
#include 
#include 
using namespace v8;
// 传入了两个参数,args[0] 字符串,args[1] 回调函数
void hello(const FunctionCallbackInfo& 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方法来转换
  Local callback = Local::Cast(args[1]);
  Local argv[1] = {
    // 拼接String
    String::Concat(Local::Cast(args[0]), String::NewFromUtf8(isolate, " world"))
  };
  // 调用回调, 参数: 当前上下文,参数个数,参数列表
  callback->Call(isolate->GetCurrentContext()->Global(), 1, argv);
}
// 相当于在 exports 对象中添加 { hello: hello }
void init(Local exports) {
  NODE_SET_METHOD(exports, "hello", hello);
}
// 将 export 对象暴露出去
// 原型 `NODE_MODULE(module_name, Initialize)`
NODE_MODULE(test, init);
//方法暴露
void Method(const FunctionCallbackInfo& args) {
  Isolate* isolate = args.GetIsolate();
  args.GetReturnValue().Set(String::NewFromUtf8(
      isolate, "world").ToLocalChecked());
}
void Initialize(Local exports) {
  NODE_SET_METHOD(exports, "hello", Method);
}
NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize)
extern "C" NODE_MODULE_EXPORT void
NODE_MODULE_INITIALIZER(Local exports,
                        Local module,
                        Local 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. 
  Handle 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. 
  Handle source = String::New("'Hello' + ', World!'");
  // Compile the source code. 
  Handle
Top