Написание Отладчика Javascript Для Windows Phone Для Apache Cordova

Друзья, не так давно вышел очередной релиз фреймворка с открытым исходным кодом.

Апач Кордова , подробности можно найти в объявление .

Спешу поделиться подробностями одной из интересных функций, которая не так очевидна и продвигается в релизе, но значительно упрощает жизнь разработчикам плагинов для Apache Cordova, предоставляя им практически неограниченное поле для деятельности.

Прошу любить и жаловать:

  
  
  
  
  
  
  
  
   

CB-6481 Add unified hooks support for cordova app and plugins

Ниже я покажу, как вы можете использовать эту функцию для написания отладчика JavaScript для Windows Phone в качестве плагина для Apache Cordova. Результат вы можете увидеть на видео ниже (смотреть с включенным режимом HD)

Что такое хуки Apache Cordova?

Лишь немногие разработчики приложений, использующие Apache Cordova, знают о крючки , но они существуют, и даже очень давно.

Это специальные сценарии, которые программист может добавить, чтобы расширить или изменить стандартное поведение платформы.

С выходом версии 4.0 этот функционал был значительно расширен, унифицирован и стал доступен разработчикам плагинов .

Все подробности использования хуков можно найти здесь .

Зачем это вообще может понадобиться? Все API Apache Cordova JavaScript являются плагинами (основными или сторонними).

Модуль plugman, отвечающий за плагины, поддерживает довольно ограниченный список элементов, которые вы можете включить в плагин, например, добавив необходимую нативную dll или какие-то дополнительные файлы с нативным кодом.

Но при разработке сложных плагинов вы столкнетесь с проблемой, заключающейся в том, что вам нужно создать что-то, чего еще нет. Например, однажды, работая над Плагин веб-SQL нам нужна была поддержка дополнительного параметра cmd, так как мы не могли собрать для AnyCPU из-за зависимостей C++ и использовали недокументированные хаки, дыры в реализации и молились, чтобы это продолжало работать.

Теперь вы можете официально добавлять дополнительные скрипты (nodejs или любой другой исполняемый файл) для программирования дополнительной необходимой логики.

Так же npm-скрипты .



Отладчик JavaScript для Windows Phone 8

Чтобы увидеть, как работают хуки и показать их мощь, мы создадим плагин для отладки JavaScript на Windows Phone 8. Вы можете просмотреть весь исходный код плагина здесь .

1. Создайте новый плагин и установите отладчик JavaScript с открытым исходным кодом.

Аардвольф внутри.

При этом наш плагин.

xml практически пуст.

<plugin xmlns=" http://apache.org/cordova/ns/plugins/1.0 " xmlns:android="http://schemas.android.com/apk/res/android " xmlns:rim="http://www.blackberry.com/ns/widgets " id="org.apache.cordova.debug.wp8" version="0.0.1-dev"> <name>WP8 Debugger</name> <description>Cordova WP8 Debugger Plugin</description> <license>Apache 2.0</license> <keywords>cordova,debug, wp8</keywords> <repo></repo> <issue></issue> </plugin>

2. Добавьте скрипты (хуки) для платформы Windows Phone 8, которые будут выполняться во время сборки (pre_package) и после запуска приложения (after_run): плагин.

xml

<platform name="wp8"> <hook type="pre_package" src="scripts/injectDebugger.js" /> <hook type="after_run" src="scripts/startDebugServer.js" /> </platform>

3. Реализуем функционал кастомных скриптов scripts/injectDebugger.js — скрывает исходные файлы JavaScript и перемещает их в специальное место, чтобы Aardwolf мог их распознать.

Чтобы не перетаскивать и динамически включать aardwolf.js в нужный html-файл, пишем его содержимое напрямую в cordova.js.

module.exports = function(ctx) { if(ctx.cmdLine.indexOf('--debug') <= 0) { // debugger should run in debug mode only return; } console.log('WP8Debugger: preparing js files for debugging.'); var serverRoot = path.join(ctx.opts.plugin.dir, 'Aardwolf'); var serverWwwCopyDir = path.join(serverRoot, 'files/www'); var platformRoot = path.join(ctx.opts.projectRoot, 'platforms/wp8'); console.log('Copy original www content'); if (fs.existsSync(serverWwwCopyDir)) { shell.rm('-rf', serverWwwCopyDir) } shell.cp('-rf', path.join(platformRoot, 'www/*'), serverWwwCopyDir); console.log('Rewriting js files'); rewriteFilesInDir(platformRoot, path.join(platformRoot, 'www')); console.log('config: ' + JSON.stringify(config)); console.log('inject Aardwolf to cordova.js'); var content = 'window.AardwolfServerUrl = "http://' + config.serverHost + ':' + config.serverPort + '";'; content += fs.readFileSync(path.join(serverRoot, 'js/aardwolf.js')).

toString(); content += fs.readFileSync(path.join(platformRoot, 'www/cordova.js')).

toString(); fs.writeFileSync(path.join(platformRoot, 'www/cordova.js'), content); console.log('WP8Debugger: done!'); }

scripts/startDebugServer.js — единственная задача этого скрипта — вовремя запустить сервер Aardwolf вместе с самим приложением.



module.exports = function(ctx) { if(ctx.cmdLine.indexOf('--debug') <= 0) { // debugger should run in debug mode only return; } console.log('WP8Debugger: launching debug server.'); console.log('WP8Debugger: debug server host:' + config.serverHost); var serverRoot = path.join(ctx.opts.plugin.dir, 'Aardwolf'); shell.exec("explorer " + '"http://' + config.serverHost + ':' + config.serverPort + '"'); var cmdLine = 'node ' + path.join(serverRoot, 'app.js') + ' -h ' + config.serverHost; console.log(cmdLine); shell.exec(cmdLine); }



Давайте запустим

1. Установите Apache Кордова

npm install -g cordova

2. Создайте заявку

cordova create testApp cd testApp

3. Добавьте наш плагин

cordova plugin add location-of-cordova-debug-wp8

4. Запуск

cordova run wp8 --debug



Написание отладчика JavaScript для Windows Phone для Apache Cordova



Полезные ссылки

Теги: #apache cordova #mobile web #windowsphone #с открытым исходным кодом #JavaScript #Разработка мобильных приложений
Вместе с данным постом часто просматривают: