NW.js 소개 및 사용 방법

9782 단어 nw.js쓰다
간단 한 소개
NW.js(본명 node-webkit)는 Chromium 과 node.js 를 기반 으로 한 프로그램 이 실 행 될 때 HTML 과 JavaScript 로 네 이 티 브 프로그램 을 만 들 수 있 습 니 다.또한 DOM 에서 Node.js 모듈 을 호출 하여 모든 웹 기술 로 네 이 티 브 응용 프로그램 을 쓰 는 새로운 개발 모델 을 실현 할 수 있 습 니 다.
(1)인터넷 에서 가장 유행 하 는 기술 로 네 이 티 브 프로그램 을 만 드 는 새로운 방법
(2)HTML 5,CSS 3,JS 및 WebGL 을 기반 으로 작성
(3)nodejs 모든 api 및 제3자 모듈 완전 지원
(4)DOM 을 사용 하여 nodejs 모듈 을 직접 호출 할 수 있다.
(5)포장 및 배포 용이
(6)32 비트 와 64 비트 의 Window,Linux,Mac OS 를 지원 합 니 다. 
사용 방법 은 다음 과 같다.
nw
1.NW.js 다운로드(홈 페이지:http://nwjs.io/)
이 안에 normal 이 건 운행 할 때 라 고 할 수 있 습 니 다.sdk 저 건 공구 상자 입 니 다.모두 내 려 오 세 요~
https://nwjs.io/downloads/
2.Enigma Virtual Box 다운로드(홈 페이지:http://enigmaprotector.com/)
2.package.json 파일 설정

{
 "name": "nw-demo",
 "version": "0.0.1",
 "main": "index.html"
}
더 많은 사용 가능 한 것 은 다음 과 같 습 니 다:

{
 "main": "app/index.html", 
 "name": "WeixinMenuEditor",
 "description": "  nw.js               App",
 "version": "0.0.1",
 "keywords": [ "  ", "     " ], 
 "window": {
 "title": "       ",
 "icon": "app/static/img/weixin_logo.jpg",
 "toolbar": true,
 "frame": true,
 "width": 1008,
 "height": 750,
 "position": "center",
 "min_width": 400,
 "min_height": 200
 },
 "webkit": {
 "plugin": true,
 "java": false,
 "page-cache": false 
 },
 "chromium-args" :"-allow-file-access-from-files"
}
  • title:문자열,기본 title 설정.
  • width/height:주 창의 크기 입 니 다.
  • toolbar:bool 값.탐색 표시 줄 을 보일 지 여부 입 니 다.
  • icon:창의 icon.
  • position:문자열.창 이 열 렸 을 때의 위 치 는'null','center'또는'mouse'로 설정 할 수 있 습 니 다.
  • min_width/min_height:창의 최소 값 입 니 다.
  • max_width/max_height:창 에 표 시 된 최대 값 입 니 다.
  • resizable:bool 값.창 크기 조정 을 허용 할 지 여부 입 니 다.
  • always-on-top:bool 값.창 을 꼭대기 에 놓다.
  • fullscreen:bool 값.전체 화면 표시 여부 입 니 다.
  • show_in_taskbar:작업 표시 줄 에 아이콘 을 표시 할 지 여부 입 니 다.
  • frame:bool 값.false 로 설정 하면 프로그램 이 테두리 없 이 표 시 됩 니 다.
  • "chromium-args":"-allow-file-access-from-files"는 구 글 브 라 우 저 에 시작 파 라 메 터 를 추가 하 는 것 과 마찬가지 로 이 코드 는 angularjs 가 로 컬 json 파일 에 직접 접근 할 수 있 도록 합 니 다.
  • 3.exe 생 성
    프로젝트 디 렉 터 리 는 다음 과 같 습 니 다.

    html 항목 을 zip 로 압축 하고 nw 로 이름 을 바 꾸 고 다음 명령 을 입력 하 십시오.
    
    copy /b nw.exe+app.nw firstApp.exe
    4.발주 발표
    Enigma Virtual Box 프로그램(enigmvb.exe)을 열 면 인터페이스 가 이렇게 되 어야 합 니 다.

    그리고 Enter Input File Name 에서 이전 단계 에 생 성 된 test.exe 파일 을 선택 하 십시오.Enter Output Name 은 기본 값 으로 사용 할 수 있 습 니 다.
    그 다음 에 아래 Add 단 추 를 누 르 면 nwjs 폴 더(이름 이 nwjs 가 아니 라 최초 로 NW.js 환경의 그 폴 더)에서 nw.exe 와 test.nw,test.exe 를 제외 한 모든 파일 을 불 러 오고 Process 를 누 르 면 실행 이 성공 할 때 까지 기다 리 면 됩 니 다.이 때 해당 경로 에서 새로운.exe 파일(우 리 는 잠시 new test.exe 라 고 부 릅 니 다)을 생 성 합 니 다.이때 new test.exe 파일 은 임의의 Windows 환경 에서 실 행 될 수 있 습 니 다.동료 에 게 복사 해서 표시 할 수 있 습 니 다.
    다음은 nw 사용 과정 중의 일부 구덩이 입 니 다.
    1.현재 애플 리 케 이 션 이 초점 을 맞 추 기 를 원한 다 면 단축 키 를 실행 합 니 다.이 라 이브 러 리 를 보 세 요.js 단축 키 설정
    
    //     ui 
     var gui = require('nw.gui');
     var option = {
     key: "Ctrl+R",
     active: function () {
      alert("     " + this.key + "  ");
     },
     failed: function (msg) {
      //       
      alert(msg);
     }
     };
     //      
     var shortcut = new gui.Shortcut(option);
     //        
     gui.App.registerGlobalHotKey(shortcut);
     //     ,          
     gui.App.unregisterGlobalHotKey(shortcut);
    2.nw.js 는 페이지 를 여러 번 새로 고 칠 수 없습니다.여러 가지 정상 이 아 닙 니 다.이것 은 페이지 를 새로 고 친 후에 js 파일 을 다시 불 러 와 변 수 를 다시 할당 하기 때 문 입 니 다.해결 방안
    nw.js 파일 읽 기 및 저장
    
    <html>
    <head>
     <meta charset="utf-8"/>
     <title>nw.js      </title>
    </head>
    <body>
     <input id="readFile" type="file" >    </input>
     <!--       filename.html -->
     <input id="writeFile" nwsaveas="filename.html" type="file">    </input>
     <p></p>
     <script>
     //nw.js         
     var fs = require("fs");
     //   
     var chooser = document.querySelector('#readFile');
     chooser.addEventListener("change", function (evt) {
      //       
      var filePath = this.value.toString();
      document.querySelector("p").innerHTML = "     " + filePath;
      fs.readFile(filePath, function (err, data) {
       if (err) {
       layer.msg("      ! :" + err.message);
       return;
       } else {
       console.log(data);
       alert(data);
       }
      })
      });
     //   
     chooser = document.querySelector('#writeFile');
     chooser.addEventListener("change", function (evt) {
      //       
      var filePath = this.value.toString();
      document.querySelector("p").innerHTML = "     :" + filePath;
      // hello    
      fs.writeFile(filePath, "Hello!
    ", function (err) { if (err) { alert(" !"); } }); }); </script> </body> </html>
    3.nwjs 의'fs'를 사용 하여 cancas 를 로 컬 그림 으로 직접 저장 합 니 다.인터넷 에서 찾 은 방법 은 모두 팝 업 선택 상자 로 저장 되 지만 지정 한 경로 로 그림 을 직접 저장 해 야 합 니 다.대화 상 자 를 꺼 내 서 사용자 가 선택 할 수 없습니다.kailniris 는 해결 방안 을 주 었 습 니 다.실행 가능 합 니 다.코드 는 다음 과 같 습 니 다.
    
    var fs = require('fs');
    var c = document.getElementById("myCanvas");
    var ctx = c.getContext("2d");
    ctx.moveTo(0, 0);
    ctx.lineTo(200, 100);
    ctx.stroke();
     <canvas id="myCanvas" width="200" height="100" style="border:1px solid #000000;">
     </canvas>
    base64Data = c.toDataURL("image/png").replace(/^data:image\/png;base64,/, "")
    fs.writeFile("c:/Dev/test.png", base64Data, 'base64', function (err) {
     if (err) {
     console.log("err", err);
     } else {
     return res.json({ 'status': 'success' });
     }
    });
    html 2 canvas 로 html 페이지 를 그림 으로 변환 하고 그림 을 로 컬 에 저장 합 니 다.코드 붙 여 넣 기(html 2 canvas.js 와 jquery 가 져 오기):
    
    //          
      var filePath = templateDir + filename + '.html';
      //    html  
      var editerDocument = window.editor.edit.iframe.get().contentWindow.document;
      html2canvas(editerDocument.body, {
      onrendered: function (canvas) {
       var base64Data = canvas.toDataURL("image/png").replace(/^data:image\/png;base64,/, "")
       var fs = require("fs");
       fs.writeFile(templateDir + filename + '.png', base64Data, 'base64', function (err) {
       if (err) {
        alert("      !");
       }
       $('#model_template_name').modal("hide");
       layer.msg("      " + filename);
       });
      }
      });
    4.app.js 에서 Node 내장 모듈 참조
    
    //  NodeJs    
     $scope.fs = require('fs'); 
         //      
     $scope.readConfig = function () {
      try {
      var configStr = $scope.fs.readFileSync(config.weixin.path, 'utf8');
      console.log(configStr);
      var obj = eval('(' + configStr + ')');
      $scope.weixin.appid = obj.appid;
      $scope.weixin.appsecret = obj.appsecret;
      $scope.weixin.qrcodeurl = obj.qrcodeurl;
      }
      catch (e) {
      console.log(e);
      alert("          ");
      }
     }
     //      
     $scope.writeConfig = function () {
      try {
      var configStr = JSON.stringify($scope.weixin);
      $scope.fs.writeFileSync(config.weixin.path, configStr, {encoding: 'utf8'});
      return true;
      }
      catch (e) {
      console.log(e);
      alert("          ");
      return false;
      }
     }
    5.제3자 모듈 wechat-api 참조
    
    //  NodeJs     
     $scope.wechatApi = require('wechat-api');
     $scope.query = function () {
      var api = new $scope.wechatApi($scope.weixin.appid, $scope.weixin.appsecret);
      api.getMenu(function (err, result) {
      if (err) {
       console.log(err);
       alert("      ");
      } else {
       load(result);
       $scope.$apply();//      
      }
      });
     };
     더 자세 한 것 은 http://liuxp.me/nwjs/References/Window/ 중국어 문 서 를 참고 할 수 있 습 니 다.
    총결산
    위 에서 말 한 것 은 편집장 님 께 서 소개 해 주신 NW.js 소개 와 사용법 입 니 다.여러분 께 도움 이 되 셨 으 면 합 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

    좋은 웹페이지 즐겨찾기