{"id":14036078,"url":"https://github.com/nextapps-de/xone","last_synced_at":"2025-06-14T16:39:26.712Z","repository":{"id":41284365,"uuid":"92315275","full_name":"nextapps-de/xone","owner":"nextapps-de","description":"Mobile Application Development Kit / MVC Framework","archived":false,"fork":false,"pushed_at":"2019-09-26T11:23:56.000Z","size":1969,"stargazers_count":23,"open_issues_count":1,"forks_count":7,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-23T15:46:23.267Z","etag":null,"topics":["android","application-framework","cordova","desktop-application","html5","hybrid-apps","ios","javascript","javascript-framework","mobile-development","mvc-framework","open-source","progressive-web-app","pwa","sdk","webapp"],"latest_commit_sha":null,"homepage":"https://nextapps-de.github.io/xone/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nextapps-de.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-05-24T16:49:07.000Z","updated_at":"2025-03-15T10:18:25.000Z","dependencies_parsed_at":"2022-07-06T16:04:49.738Z","dependency_job_id":null,"html_url":"https://github.com/nextapps-de/xone","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextapps-de%2Fxone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextapps-de%2Fxone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextapps-de%2Fxone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nextapps-de%2Fxone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nextapps-de","download_url":"https://codeload.github.com/nextapps-de/xone/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251691610,"owners_count":21628356,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","application-framework","cordova","desktop-application","html5","hybrid-apps","ios","javascript","javascript-framework","mobile-development","mvc-framework","open-source","progressive-web-app","pwa","sdk","webapp"],"created_at":"2024-08-12T03:01:49.696Z","updated_at":"2025-04-30T11:33:23.043Z","avatar_url":"https://github.com/nextapps-de.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"﻿\u003cp align=\"center\"\u003e\n    \u003cbr\u003e\n    \u003cimg src=\"https://nextapps.de/img/logo-xone.svg\" alt=\"Xone Javascript Development Environment\" width=\"50%\"\u003e\n    \u003cbr\u003e\u003cbr\u003e\n    \u003ca target=\"_blank\" href=\"https://www.npmjs.com/package/xone\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/xone.svg\"\u003e\u003c/a\u003e\n    \u003cimg src=\"https://img.shields.io/badge/status-BETA-orange.svg\"\u003e\n    \u003ca target=\"_blank\" href=\"https://travis-ci.org/nextapps-de/xone\"\u003e\u003cimg src=\"https://travis-ci.org/nextapps-de/xone.svg?branch=master\"\u003e\u003c/a\u003e\n    \u003ca target=\"_blank\" href=\"https://coveralls.io/github/nextapps-de/xone?branch=master\"\u003e\u003cimg src=\"https://coveralls.io/repos/github/nextapps-de/xone/badge.svg?branch=master\"\u003e\u003c/a\u003e\n    \u003ca target=\"_blank\" href=\"https://github.com/nextapps-de/xone/issues\"\u003e\u003cimg src=\"https://img.shields.io/github/issues/nextapps-de/xone.svg\"\u003e\u003c/a\u003e\n    \u003ca target=\"_blank\" href=\"https://github.com/nextapps-de/xone/blob/master/LICENSE.md\"\u003e\u003cimg src=\"https://img.shields.io/npm/l/xone.svg\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1\u003e\u003c/h1\u003e\n\u003ch3\u003eMobile Application Development Kit / MVC Framework\u003c/h3\u003e\n\n__Xone__ provides you a lightweight full stack environment on top of Node.js to develop beautiful applications for every use (based on HTML5 and JavaScript) and enables the optimal integration of an universal codebase into a wide range of systems (e.g. mobile devices, tablets, desktops, browser environments).\n\n\u003c!--\n\u003e __Notice:__ Actually this is a beta state of this repository.\n--\u003e\n\n\u003c!--\nSome breaking changes could possibly be introduced in upcoming versions. Do not use for production until this message has been removed.\n--\u003e\n\n* [License](LICENSE.md)\n* [Installation](doc/install.md)\n* [API](doc/api.md) (work in progress)\n* [Codebase Structure](doc/code_structure.md)\n* [Global App Configuration](doc/app_config.md)\n* [Basic Examples: MVC Pattern / Routes / Events / Templates / Dev Tools](doc/xone.md)\n* [Persistent Models](doc/xone_model.md)\n* [Core Library](doc/xone_core.md)\n* [Dependency Management \u0026 Calculation](doc/xone_deps.md)\n* [AMD Loader, Build Plugin](doc/xone_amd.md)\n* [Validations](doc/xone_validate.md)\n* [Demo/Tutorial: Todo App](https://nextapps-de.github.io/xone/)\n\n---\n\n### Announcement Xone v1.0.0 stable\n\nXone will get some major changes. This was required to open capabilities for upcoming features we are working now like __Xone Native__. The plan is to release a final architecture until v.1.0.0 and then also to be done with most of the breaking changes.\n\n##### v0.9.0 beta (coming in Q1/2018)\n\n- Xone Native (Cordova-based wrapper)\n    - Enables native features without changing anything on your codebase, like:\n        - Native Transitions\n        - Native Filesystem/Storage\n        - Native Image Library\n        - Native Media Player\n        - Native Device Access (Camera, Photo Library, Statusbar, etc)\n        - Native Map\n    - Provides default Cordova-based project build configurations (which already including all required plugins as well as platform configurations)\n- Available Source Code of Demo Apps\n- Native Demo App (through App Stores), including:\n    - technical demos\n    - components demo\n    - demo apps\n    - xone developer tools\n    - documentation\n- \\\u003e 90% test coverage\n\n\u003cimg src=\"doc/xone_processing_model.png\" alt=\"\" width=\"50%;\" align=\"right\" style=\"float:right; padding: 0 0 20px 20px\"\u003e\n\n##### v0.8.0 beta (in progress)\n\n- Xone Non-Blocking UI Processing Model, controllable via: \n    - Util.Process.`async`\n    - Util.Process.`paint`\n    - Util.Process.`promise`\n    - Util.Process.`queue`\n    - Util.Process.`stack`\n    - Util.Process.`asap`\n    - Util.Process.`run` (Pseudo Thread Runner Instance)\n- Fully transfer to Asynchronous Module Definition (replaces the poorly Closure Compiler dependency system)\n- Replace most of global namespaces of the framework to constructors and also changing capitalized style for the new AMD namespacing:\n    - ___Note:___ By using AMD you can internally customize naming of all references of Xone (conflicts with global namespace is not possible in AMD)\n    - `APP.CONTROLLER[name]` → `new Controller(name)` or `Controller.new(name)`\n    - `APP.VIEW[name]` → `new View(name)` or `View.new(name)`\n    - `APP.EVENT[query]` → `new Event(query)` or `Event.new(query)`\n    - `APP.ROUTE[route]` → `new Route(route)` or `Route.new(route)`\n    - `APP.MAPPER[name]` → Is now a part of View, Model and/or Route (see: _View Mappings_, _Model Mappings_, _Payload Mappings_)\n    - `APP.MODEL[name]` → `new Model(name)` or `Model.new(name)`\n    - `APP.WORKER[name]` → `new Worker(name)` or `Worker.new(name)`\n    - `APP.HANDLER` → you are free to use any style (like before)\n    - `APP.HELPER` → you are free to use any style (like before)\n    - `APP.SETTING.get(key)` → `Setting.get(key)`\n    - `APP.PLUGIN.Filesystem` → `Filesystem`\n    - `CORE.*` → `Util.{Package}.*` (e.g. `Util.Array.merge`)\n    - alternatively of calling the method _.new()_ it is also possible to use _.create()_ as well as _.register()_\n    - Singular naming coding convention is still valid\n    - new constructors can either be instantiated via the builtin method .new() or via the classical new keyword\n    - the new concept of using constructors opens a lot of nice features, they will coming soon, and also adds some missing OOP styles\n- User Interface Components\n    - Slider\n    - Side Drawer (Side Menu)\n    - Internal App Status Notification\n    - Adjustable Statusbar-Visibility and Webview-Overlays-Statusbar per Screen/View\n- Provides package definitions (packages can group or import html-templates, javascript, css styles and assets)\n- Provide dependency management of whole modules/packages through the keyword import(\"package\") and export(\"package\", ...)\n- Worker to de-/compress contents in background (lzip)\n\n\u003cimg src=\"doc/xone_gui.png\" alt=\"\" width=\"35%;\" align=\"right\" style=\"float:right; padding: 0 0 20px 20px\"\u003e\n\n- Xone Development User Interface (Browser replacement for any console commands)\n- Model supports now virtual properties everywhere (not only in views)\n- Model can now define a structural schema to save in storage (this also improves extraction of nested models)\n- New Templating Implementation and Compiler\n    - allows inserting Javascript\n    - allows nesting of for-loops and if-conditionals\n    - better handling of virtual and mapped properties\n    - ultra fast through new pre-compilation strategy and usage of model-bind-caching (instead of view-bind cache)\n\n##### v0.7.0 beta\n\n- Support for Web Components\n- Support for Web Templates\n- Support for Native Filesystem\n- Implements Web Animation API\n- Virtual DOM Integration (Inferno)\n- Xone Native Adapter for Cordova-based Apps\n    - Popups, Alerts, Confirmations, Status\n    - Filesystem Storage\n    - Native Transition\n    - Action Sheet\n    - Notifications\n    - Reminder\n    - Calendar\n    - Native Image Library\n    - Native Map\n- New View Controller Engine \n- New Layout Controller (the old was completely removed)\n- Simplified Project Structure\n- Build Extensions:\n    - CSS Auto-Prefixer\n    - Manage Hooks\n    - Manage Optional Dependencies\n- Improved persistent storing of models\n- Improved Auto Resizing Layout \n- Improved Dependency Management\n- Lazy image loader (with offline filesystem cache)\n- User Interface Components\n    - Navigation Bar\n    - Toolbar\n    - Scrollpane (vertical, horizontal, split)\n    - Lists\n    - Tables\n    - Grid Layout\n    - Pull to refresh\n    - Swipe-back views\n- View Manager controls components\n- Render Payloads\n\nThose features will become deprecated for now (unsupported):\n\n- Using the _CONFIG.RACK_\n- Layout Controller (any calls to _APP.LAYOUT_)\n- Old View Helpers (slides, pulls, popups, alerts, ...)\n- Build _xone.bundle.js_\n- Custom location of xone installation\n\n---\n\n### Features\n\nBasically Xone  \u003c!-- is a \"cherry-picked\" mixture of common programming paradigm used by major technologies like Ruby on Rails, Mustache/Handlebars, Node.js, Mithril, Google Closure and combines them into a lightweight application development environment. For this purpose Xone --\u003e has an easy to learn high-level interface without forcing you to implement any low-level \"framework-cryptofied\" code as you would do with Angular or React. That also preserves huge flexibility to your codebase for upcoming technologies, ports or any other major changes.\n\n* Manage and execute _production_, _development_, _benchmark_ and _test_ environments\n* Developing seamlessly in a web browser environment (saves you tons of time!)\n* Provides a dynamic template system which is readable for designers \u003c!-- * Therefore you will get the most lightweight footprint for your codebase --\u003e\n* Provides an advanced declarative MVC architecture for your app (e.g. persistent models, routes, controller, events, views, handlers, mapper)\n* Uses Closure Compiler to achieve optimal dead code elimination\n* Xone libraries compiles with your codebase (the used code remains in a single javascript build file)\n* Others: build system, dependency management, environment management, platform management, unit test integration, benchmark integration\n* Simple, fast and natural usage out of the box without loosing any \"framework magics\"\n* Targeting products: hybrid apps, progressive web apps, apps based on cordova/phonegap/ionic/electron, single-page application, browser apps\n\n---\n\nXone basically is available in 3 different versions:\n\n1. __Xone Project__ (Development Environment)\n    * initial project created by `xone create`\n    * Provides you a scalable development stack for modern web-based applications on top of Node.js\n    * Is intended for a compilation/build\n2. __Xone Extern Bundle__ (Standalone)\n    * [_xone.bundle.js_](//cdn.rawgit.com/nextapps-de/xone/master/dist/xone.bundle.js)\n    * Alternatively use this bundle to add Xone as a dependency to an already existing build/compiler system (compatible with Closure Compiler \"Advanced Mode\")\n    * Is intended for a compilation/build\n3. __Xone Extern Library__ (Standalone)\n    * [_xone.lib.js_](//cdn.rawgit.com/nextapps-de/xone/master/dist/xone.lib.js)  \u003e  [_xone.lib.min.js_](//cdn.rawgit.com/nextapps-de/xone/master/dist/xone.lib.min.js)\n    * Skips the build part completely and make Xone using like a jQuery library in your web-based project\n    * Is not intended for a compilation\n\n#### Xone Comparison: 1. Project, 2. Bundle, 3. Library\n\n| Features by default | Xone Project (Environment) | Xone Bundle (Standalone) | Xone Library (Standalone) |\n| ------------- | ------------- | ------------- | ------------- |\n| Final project filesize | smallest | small | normal |\n| Core Library | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e |\n| MVC Framework | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e |\n| Render Engine | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e |\n| Unit Tests | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | - | - |\n| Debugging Tools | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | - |\n| Environments | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | - | - |\n| Global App Configuration | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | - |\n| Build/Compile Project | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | - |\n| Manage Platforms | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | - | - |\n| Dynamic Templates (HTML \u003e JSON) | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | - | - |\n| Dependency Management | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | - | - |\n| Initial Codebase | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | - | - |\n| CLI Tools | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | - | - |\n| Support Closure Compiler Advanced Mode | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | - |\n| Dead Code Removal | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | - |\n| Is __not__ strictly bound by Conventions | - | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e |\n| Does __not__ require Node.js | - | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e |\n| Use as a Standalone Library (like jQuery/Underscore) | - | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e |\n| Use as a Framework (like Bootstrap/Angular) | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | - |\n| Use as a Dev Environment (like Sencha/Meteor) | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | - | - |\n\n## Installation (Xone Project)\n\n```bash\n\u003e npm install -g xone\n```\n\u003e __Note:__ To make the _Xone CLI_ globally available, you have to install Xone as a global npm module (also in addition to any local installation if you want to keep simple as most as possible). You can also use a local custom versions of Xone as well as using the CLI without any global installations (read further).\n\n\u003e __Note:__ Xone Project binaries typically has to be installed via \"xone create\" or \"xone install\" and comes with its own pre-defined folder structure (followed by some conventions). You can pick one of the two [stand-alone](//github.com/nextapps-de/xone/tree/master/dist) versions optionally to skip as many conventions as possible (e.g. Xone acts like an extern Javascript Plugin).\n\n#### Windows\n\nAlternatively in the root of your project you can use the local CLI shortcut _app_ instead for _xone_, e.g.:\n```bash\nmy_project\u003e app build\n```\n\u003e __Note:__ The options _create_ and _install_ both are not available over the shortcut _app_.\n\n#### MacOS/Linux\n\nOn a linux machine you may use:\n```bash\nsudo npm install -g xone\n```\n\nIf the global \"xone\" identifier is not registered properly try one of these lines:\n```bash\nhash xone\nhash -r\n```\n\n\u003c!--\nIf you also like to make the shortcut _app_ in your terminal available, you need to add the Xone _bin_ folder to the _PATH_ of your system:\n--\u003e\n\u003c!--\nexport PATH=$PATH:/path/to/node_modules/xone/bin/\n--\u003e\n\nAlternatively you can use the local CLI fallback like:\n```bash\nbash xone build\n```\n\n---\n\n### Create New Xone Project\n\nCreate a new project inside the directory _workspace/my_project_:\n```bash\nworkspace\u003e xone create my_project\n```\n\nWorks, but it is generally not recommended to use whitespaces in a project folder name:\n```bash\nworkspace\u003e xone create \"my project\"\n```\n\n[Read further](doc/install.md)\n\n---\n\n### Update existing Xone project\n\nTo update Xone of an already existing project you basically need __2 steps__:\n\n1. Fetch and install latest version via npm:\n```bash\n\u003e npm install -g xone\n```\n\n2. Install update to a Xone project (automatically fetches sources from _npm_modules_)\n```bash\nworkspace/my_project\u003e xone install\n```\n\u003e __Note:__ This will not overwrite any of your project files! Only projects xone library files located in _app/lib/xone/_ are updated.\n\n[Read further](doc/install.md)\n\n---\n\n### Build Xone project\n\nUn-compiled sources located in: _workspace/my_project/app/*_\n```bash\nmy_project\u003e xone build\n```\nProduction build located in: _workspace/my_project/public/www/*_\n\n\u003e __Note:__ We recommended to use production builds for any external/public release and use the sources only for developing, testing and may some other internal purposes. To skip the build integration of Xone, you have to use the standalone version instead.\n\n#### Run Xone project (Local Webserver)\n```bash\nmy_project\u003e xone server\n```\nOpen your preferred webrowser and goto _'http://localhost/app/'_ or _'http://localhost/public/www/'_\n\nOptionally you can pass custom host and port:\n```bash\nmy_project\u003e xone server localhost 8080\n```\nOpen your preferred webrowser and goto _'http://localhost:8080'_\n\n#### Run Xone project (Local Filesystem)\n\nOpen _app/index.html_ from sources or _public/www/index.html_ from production build in your preferred browser. \n\n#### Deploy Xone project (Cordova, Web, etc.)\n\nUse production builds located in _workspace/my_project/public/*_ to move forward into your Cordova-based projects or upload to a webserver. \n\n---\n\n### Manage platforms\n\nXone provides custom platform injections to perform platform specific production builds. Therefore all those builds only includes necessary code and dependencies for their related platform.\n\nShow currently defined platforms:\n```bash\nmy_project\u003e xone platform\n```\n\nPerform platform specific compilation:\n```bash\nmy_project\u003e xone compile android\n```\nCompiled files remains in: _workspace/my_project/app/*_\n\nPerform platform specific builds:\n```bash\nmy_project\u003e xone build android\n```\nBuild destination: _workspace/my_project/public/android/*_\n\n#### Add custom platforms\n\nYou can add unlimited custom platforms, e.g. create a platform 'webapp':\n```bash\nmy_project\u003e xone platform add webapp\nmy_project\u003e xone build webapp\n```\nBuild destination: _workspace/my_project/public/webapp/*_\n\n---\n\n### Build Xone Standalone\n\n```bash\nmy_project\u003e xone build bundle\n```\nBuild destination: _workspace/my_project/app/lib/xone/dist/xone.bundle.js_\n\n```bash\nmy_project\u003e xone build lib\n```\nBuild destination: _workspace/my_project/app/lib/xone/dist/xone.lib.js_\n\n```bash\nmy_project\u003e xone build lib min ./app/js/\n```\nBuild destination: _workspace/my_project/app/js/xone.lib.min.js_\n\n\u003e __Note:__ The order of passed parameters cannot be changed actually.\n\n### Using Xone Standalone Library\n\n```html\n\u003c!DOCTYPE html\u003e\n\u003chtml\u003e\n\u003chead\u003e\n    \u003cmeta charset=\"UTF-8\"\u003e\n\u003c/head\u003e\n\u003cbody\u003e\n    \u003c!-- END_OF_BODY --\u003e\n    \u003c!-- LOAD XONE: --\u003e\n    \u003cscript src=\"js/xone.lib.min.js\"\u003e\u003c/script\u003e\n    \u003c!-- YOUR APP CODE: --\u003e\n    \u003cscript src=\"js/app.js\"\u003e\u003c/script\u003e\n\u003c/body\u003e\n\u003c/html\u003e\n```\n\n---\n\n### Configure Build Tool\n\nXone build uses the Google Closure Compiler. All Xone libraries also supports compilation in _\"Advanced Mode\"_. The build properties can be configured in `xone.json`. The Closure Compiler also provides a simple dependency management system (provide/require) you should make use of to improve dead code removal.\n\n\u003e __Note:__ Actually Xone supports 2 different versions of closure compiler: 1. requires Java, 2. requires Javascript (Node). It is recommended to have a Java (JRE) properly installed on your machine to unlock some benefits of the Closure Compiler Java version. To change the type of the compiler you need to change the value of the field `closure_compiler_lib_type` from `\"js\"` into `\"jar\"` in `xone.json` accordingly.\n\n\u003e __Note:__ If you have less experience with the Closure Compiler you can optionally set the compilation level to _\"simple\"_ on the field `closure_compiler_level` within the xone config file.\n\n#### Comparison: Closure Compiler (Java) VS. Closure Compiler (Javascript)\n\n| Features by default | Closure Compiler (Java) | Closure Compiler (Javascript) |\n| ------------- | ------------- | ------------- |\n| Dependency Management | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e |\n| Auto Sort Dependencies | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | - |\n| \"Strict\" Dependencies (Entry Point) | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | - |\n| \"Pretty Print\" Compilation | \u003cimg src=\"http://nextapps.de/img/icon_check.png?v=2\"\u003e | - |\n| Build Performance | Normal | Slow |\n| Compression Ratio | Best | Good |\n| Memory Consumption | Normal | Extreme |\n\n---\n\n### Generating Docs (JSDoc)\n```bash\nmy_project\u003e xone docs\n```\nDocs will be generated in _'docs/api/'_.\n\n---\n\n\u003c!--\n### Xone Render Engine\n--\u003e\n\u003c!--\nThe render engine provides an optional \"fast mode\" to get the most out of performance. All internal processes of Xone takes advantage when \"fast mode\" is enabled (e.g. render templates, animate elements, toggle views). When it runs in \"fast mode\" the render engine has a very closed infrastructure you should keep notice:\n--\u003e\n\n\u003c!--\n1. CSS Styles\n    * Change styles\n    * Get styles\n2. CSS Classes\n    * Change classes\n    * Get classes\n3. HTML Content\n    * Change contents\n    * Get contents\n--\u003e\n\n\u003c!--\n\u003e __Note:__ When \"fast mode\" is enabled it should not be mixed by any other external manipulations of the same category listed above. We recommended to disable the \"fast mode\" when style issues occurs by any direct style manipulations (e.g. when using an extern library).\n--\u003e\n\u003c!--\n\u003e __Note:__ The \"fast mode\" is enabled by default in a _Xone Project_ (may change in future) and is disabled by default in the _Xone Extern Library_.\n--\u003e\n\n\u003c!--\n###### Performance Comparison: Native VS. jQuery VS. Xone\n--\u003e\n\u003c!--\n* https://jsperf.com/xone-style-performance\n--\u003e\n\u003c!--\n* https://jsperf.com/xone-dom-selector-performance\n--\u003e\n\n\u003c!--\n###### Restrictions (when \"fast mode\" is enabled)\n--\u003e\n\u003c!--\nThe problem:\n--\u003e\n\n\u003c!--\n```js\nvar display;\n\n// get style direct:\ndisplay = document.getElementById('my_div').style.display;\nconsole.log(display); // -\u003e 'block'\n\n// set style Xone:\nCORE.setStyle('my_div', 'display', 'none');\n\n// get style Xone:\ndisplay = CORE.getStyle('my_div', 'display');\nconsole.log(display); // -\u003e 'none'\n\n// get style direct:\ndisplay = document.getElementById('my_div').style.display;\nconsole.log(display); // -\u003e 'block' !!!\n```\n--\u003e\n\n\u003c!--\nInstead do this:\n--\u003e\n\n\u003c!--\n```js\nvar display;\n\n// set style Xone:\nCORE.setStyle('my_div', 'display', 'none');\n\n// do on next refresh:\nCORE.paint(function(){\n\n    // get style direct:\n    display = document.getElementById('my_div').style.display;\n    console.log(display); // -\u003e 'none'\n});\n```\n--\u003e\n\n### Development Environments\n\nDefault environments are:\n\n- production (live build)\n- development (local)\n- test (local)\n- benchmark (local)\n\nChange environment in `app/manifest.js`:\n\n```json\n\"env\": \"development\",\n\"platform\": \"www\"\n```\n\nOr just adding parameters to the URL:\n\n```url\nhttp://localhost:9000/?env=test\u0026platform=android\u0026debug=true\n```\n\n\u003e __Note:__ You are also able to override any `CONFIG` attribute by passing URL parameters respectively.\n\n##### Custom Environments\n\nShow currently defined environments:\n\n```bash\nmy_project\u003e xone env\n```\n\nAdd custom environments:\n\n```bash\nmy_project\u003e xone env add offline\n```\n\nBuild destination: _workspace/my_project/app/config/offline.js_\n\n\n\u003c!--\n### TODO\n--\u003e\n\n\u003c!--\n- [x] Provide Standalone Version (dependency-less)\n- [x] Create/Install (CLI)\n- [x] Use npm modules for system tasks (supports all platforms)\n- [ ] Improve Environment Mappings\n- [x] Improve Worker Integration\n- [x] ~~Provide Plugin Management~~\n- [x] Replace Closure Dependency Loader\n- [x] Improve Dependency Management\n- [x] Improve Platform Management\n- [ ] Support Hooks\n- [x] Support Animations\n- [x] Support Asynchronous Module Definitions\n- [x] Improve Versioning\n- [ ] Improve Migration\n- [x] Improve Benchmark Integration Part 1/2\n- [ ] Improve Benchmark Integration Part 2/2\n- [x] Refactor API\n- [ ] Add Documentation\n- [ ] Add Demos / Examples\n- [ ] Add JSDoc\n- [ ] Add Unit Tets\n    - [x] Core Tests\n    - [x] AMD Tests\n    - [x] Async Tests\n    - [x] Paint Tests\n    - [x] Model Tests\n    - [ ] MVC Tests\n    - [ ] Test Xone Standalone\n- [x] Platform Support\n    - [x] MacOS\n    - [x] Windows\n    - [x] Linux\n--\u003e\n\n\n\u003c!--\n### Features\n--\u003e\n\u003c!--\n* Manage Development Environments:\n    * production, development, test, benchmark\n* Manage Process Environments (Rack):\n    * webapp, cordova, native, local, browser\n* Manage Platform Environments:\n    * Android, iOS, Windows, Webkit, Mozilla, MSIE\n* Model-View-Controller\n    * Supports persistent model management\n* Full MVC-managed environment:\n    * Routes\n    * Events\n    * Handlers\n    * Controller\n    * Interfaces\n    * Adapter\n    * Models\n    * Mapper\n    * Views\n    * Payloads\n    * Threads / Worker\n    * Stubs / Mocks\n    * Translations\n* Javascript Core Library\n* Codebase Dependency Management\n* Supports DOM pattern in JSON format\n* Template System\n    * Static Content\n    * Dynamic Content\n    * Partials\n    * Locales\n* Build System\n* Template Compiler\n* Local Webserver\n* Layout Manager\n* Multi-Platform-Injections\n* Event Delegation\n* NoSQL Persistent Storage\n* GZIP Storage Data Compression\n* FlexiCache (auto-scale, auto-clean)\n* Multi Language Support\n* Unit Test Integration\n* Versioning \u0026 Migrations\n* Dev Task Hooks (Compile, Build, Deploy, Process)\n* Xone Library Hooks (MVC, Storage, Handlers, Events)\n* Debug Mode\n    * Debugger Tools\n    * Performance Tools\n    * Analytics/Statistic Tools\n* Benchmark Integration\n* Closure Compiler Integration (\"Advanced Mode\")\n* Less CSS Integration\n* CSS Compressor Integration\n* JSDoc Integration\n* Provides the most possible performance while ensuring maximum crossplatform support\n* Compatible with almost each library out there (also can be mixed with similar technologies like: Angular or React)\n--\u003e\n\n\u003c!--\n\u003cimg src=\"http://nextapps.de/img/xone_workflow.png\"\u003e\n--\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnextapps-de%2Fxone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnextapps-de%2Fxone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnextapps-de%2Fxone/lists"}