Dojo - meta information for the project.

Overview

Dojo Logo

dojo-meta

Join the chat at https://discordapp.com/invite/M7yRngE

This repository contains information regarding Dojo (versions 2 and newer) that crosses package boundaries.

Visit us at dojo.io for documentation, tutorials, cookbooks, and other materials. This repository contains detailed information on the structure of Dojo, while dojo.io is focused on getting started with and learning Dojo.

Guidelines and Style Guide

There are several documents that are relevant for contributing to Dojo.

Dependent Technologies

While Dojo tries to provide a holistic set of tools to build web applications, there are several key technologies where we feel that Dojo would be better integrating and building upon versus building from the ground up.

In order to ensure that Dojo is a solid set of JavaScript tools and libraries, Dojo is built on TypeScript. This provides us with structural design time typing as well as an effective way to communicate the intent of the Dojo APIs. It also provides us the ability to adopt ES6+ syntax features but make distributables that will be backwards compatible to the target browsers for Dojo.

TypeScript and Dojo Compatibility Matrix

TypeScript and Dojo both iterate rapidly. In general Dojo strives for maximum compatibility, with a plan to periodically increase the minimum TypeScript version so we can begin relying on newer TypeScript features. Please review this list when using Dojo:

Dojo version TypeScript version (minimum) TypeScript version (maximum)
2.0 2.6.x 2.6.x
3.0 2.6.x 2.6.x
4.0 2.6.x 3.1.x

Packages

There are several packages that makeup the Dojo platform:

Less Active Packages

We have some other packages which are not actively used by Dojo or still in their planning stages:

We have some deprecated packages:

  • dojo/actions - A command like library for Dojo applications - This is deprecated because we have not found this abstraction to add value
  • dojo/app - An application framework for Dojo - This is deprecated because widgets + routing + stores are sufficient to deal with higher order application concerns
  • dojo/cli-build-webpack - A legacy application and widget build command - *This is deprecated as it has been superseded by @dojo/cli-build-app and @dojo/cli-build-widget *
  • dojo/compose - A mixin/trait based composition library - This is deprecated because TypeScript now offers mixin behavior
  • dojo/dom - A set of APIs for manipulating the DOM - This is deprecated because Dojo fully abstracts away DOM access.
  • dojo/interfaces - Common interfaces and types for Dojo - This has been deprecated as interfaces now live in their respective repositories
  • dojo/parser - A HTML document parser for instantiating objects declaratively - This is deprecated in lieu of functionality provided using Custom Elements from @dojo/widget-core.

Examples

We have added a repository of examples which have been built on Dojo. Those examples are available in the dojo/examples repository and are live at dojo.github.io/examples.

Support Packages

There are several packages which are designed to support the Dojo platform. Generally these packages are not directly used by end developers:

There are additional packages which are not actively used:

  • dojo/diagnostics - A set of modules that can be used to instrument Dojo 2 applications to provide additional diagnostic information.
  • dojo/devtool - A devtool extension for Chrome and Firefox that provides an interface to the dojo/diagnostics information.
  • dojo/test-extras - A set of modules to help with testing Dojo (relevant features moved into @dojo/framework)
  • dojo/web-editor - A web editor that can run projects exported from cli-export-project. Today we recommend using the Dojo template on CodeSandbox.

Status

The following tables contain status information for the packages:

Package CI Status Code Coverage npm Stage
dojo/cli Build Status codecov.io npm version 4.0
dojo/framework Build Status codecov.io npm version 4.0
dojo/interop Build Status codecov.io npm version 4.0
dojo/themes Build Status codecov.io npm version 4.0
dojo/widgets Build Status codecov.io npm version 4.0

CLI Packages

The dojo/cli will provide extensible functionality via a variety of packages that can be plugged into the CLI.

Package CI Status Code Coverage npm Stage
dojo/cli-build-app Build Status codecov.io npm version 4.0
dojo/cli-build-widget Build Status codecov.io npm version 4.0
dojo/cli-create-app Build Status codecov.io npm version 4.0
dojo/cli-create-theme Build Status codecov.io npm version 4.0
dojo/cli-create-widget Build Status codecov.io npm version 4.0
dojo/cli-export-project Build Status codecov.io npm version Alpha
dojo/cli-test-intern Build Status codecov.io npm version 4.0

Enhancements and Extensions

These are packages which provide extended functionality, usually to other tools, which are used by Dojo. For those using the out of the box tooling, there is little value in these packages, but for those having to integrate Dojo into an existing development pipeline, these packages are likely to be of use.

Package CI Status Code Coverage npm Stage
dojo/devtool Build Status codecov.io npm version Alpha
dojo/diagnostics Build Status codecov.io npm version Alpha

Internal and Support Packages

In addition to dojo/cli there are some packages which are designed to be used both by the Dojo team internally, but also others who are developing Dojo applications:

Package CI Status Code Coverage npm Stage
dojo/grunt-dojo2 Build Status codecov.io npm version 4.0
dojo/grunt-dojo2-extras Build Status codecov.io npm version 4.0
dojo/scripts Build Status codecov.io npm version 3.1
dojo/webpack-contrib Build Status codecov.io npm version 4.0

Example app packages

Package CI Status Code Coverage
dojo/examples Build Status codecov.io

Inactive or Deprecated packages

Package CI Status Code Coverage npm
dojo/actions Build Status codecov.io
dojo/app Build Status codecov.io
dojo/cli-build-webpack Build Status codecov.io npm version
dojo/cli-css-typings
dojo/compose Build Status codecov.io npm version
dojo/crypto
dojo/dataviz Build Status
dojo/dgrid Build Status codecov.io npm version
dojo/dom Build Status codecov.io
dojo/interfaces Build Status npm version
dojo/loader Build Status codecov.io npm version
dojo/parser
dojo/streams Build Status codecov.io npm version
dojo/test-extras Build Status codecov.io npm version
dojo/web-editor Build Status codecov.io npm version

Licensing information

© 2019 JS Foundation & contributors. New BSD license.

Comments
  • Virtual DOM for Dojo 2?

    Virtual DOM for Dojo 2?

    Topic

    Should we consider a virtual DOM for Dojo 2?

    Considerations

    There are several considerations that should be made about a virtual DOM for Dojo 2:

    • Perceived benefits:
      • Allowing batching/diffing of DOM operations to improve perceived user responsiveness
      • Insertion of a control point between Widgets (and other DOM operators) and the DOM
      • Ability to support serialization of DOM actions which allows for easier isomorphic code
    • Perceived disadvantages:
      • Additional overhead on the client
    • Should a virtual DOM include the full sub-set of DOM operations, or only those operations we would want people to use in the construct of a Dojo 2 Widget?
    • Are there existing libraries that are sufficient to integrate into Dojo 2?
    discussion 
    opened by kitsonk 33
  • Distribution Formats

    Distribution Formats

    Thinking about how we should format distributions, I was thinking something like this:

    dist
    └ umd - individual UMD modules with external sourcemaps
    └ es - individual ES6+ targeted modules in es6 module format
    │      with inline sourcemaps and sources (essentially for
    │      rebundling)
    └ src - source TypeScript files
    └ typings - Any typings for the package, including the packages typings
      index.js - a UMD module that contains all the packages modules in a single bundle
      index.min.js - a UMD module that contains everything minified
      index.js.map - A sourcemap file for index.js
      index.min.js.map - A sourcemap file for index.min.js
      package.json - CommonJS package meta-data
      bower.json - bower package meta-data
      README.md - Package's readme
      LICENSE - Package's license
    

    I think it will be important to consumers to have easy ways to consume the packages in different workflows. I would expect our build pipeline would eventually just grab the /src and keep rolling things up into a final distribution build, but I can see where people will want to grab things like /es and use Babel or something else to do their targeting won't need to have TypeScript installed.

    discussion 
    opened by kitsonk 23
  • Clarity between Dojo 1.x and 2.x packages

    Clarity between Dojo 1.x and 2.x packages

    • [x] Review all dojo packages to verify that they state clearly if they are part of Dojo 1.x or 2.0+
    • [ ] Update org description to be clear about 2.0+ vs. 1.x
    • [x] Update URL in org to dojo.io (verify we're ready for that)
    • [ ] Do something about dojo/dojo2 package as that is completely confusing now (would require updates to Intern and perhaps others)
    beta3 
    opened by dylans 19
  • Create cli-tutorial-helper module

    Create cli-tutorial-helper module

    One of the use cases that the Dojo 2 website should support is to allow users to download any tutorial so that they can explore it locally. To support this, a new cli module should be created that exposes commands that allow a user to install a specific demonstration app along with all of its dependencies so that the user can immediately build and run it locally.

    enhancement discussion dojo-2.1 
    opened by vansimke 14
  • Decide on API documentation generation workflow

    Decide on API documentation generation workflow

    Setup workflow to generate API docs for Dojo 2 packages. Things to consider:

    • Will we do something similar to Leadfoot and DigDug ( https://github.com/SitePen/jsdoc-catalyst-theme and https://theintern.github.io/leadfoot/ )?
    • Will we build API docs per package or one view for all packages?
    • Will we set this up to automatically rebuild nightly? Per new tag? Manual only?
    • Multiple version support?
    • Host on GitHub or Dojo web site?
    • Integration with other documentation (e.g. something like a reference guide or tutorials, demos, etc.)?
    • Other things to consider?
    Epic 
    opened by dylans 13
  • Build Proposal/Specification

    Build Proposal/Specification

    Story

    Dojo 2 needs a set of tooling to make building Dojo 2 applications straight forward, as well as an easy way of managing dependencies of Dojo 2 packages.

    Features

    The proposal should express the following features:

    • Ability to easily include dependent packages
    • Ability to build from TypeScript source, including all source packages that are written in TypeScript
    • Build time concatenation/layering
    • Build time minification
    • Generation of typings for a package

    Considerations

    There are several things that should be considered:

    • Minification for TypeScript could benefit from a minifier that is integrated into the language services (see: Microsoft/TypeScript#8)
    • Overall dependency management and typings is still up in the air (see: Microsoft/TypeScript#5537 and: typings/typings#3), although we have dts-generator this is likely limiting in the future.
    • There seems to be more support for typings than DefinitelyTyped going forward.
    • GruntJS is our preferred task runner, but are their other considerations?
    • Should we support the RequireJS extensions to AMD for build time plugin resolution? (see: dojo/loader#31)
    discussion Epic 
    opened by kitsonk 13
  • Provide layout.css

    Provide layout.css

    @rishson commented on Mon Jan 16 2017

    We need to consider what layout mechanisms we want to support in Dojo 2. We should consider css-grid support, flexbox support etc. We need to decide if we recommend 3rd party grid solutions, write our own, provide advice only...


    @matt-gadd commented on Wed Jan 18 2017

    @rishson I think this issue should be moved to dojo/meta.


    @bitpshr commented on Fri Jan 20 2017

    Thinking out loud, all our widgets are still rendered as DOM. Users can always write their own CSS to lay widgets out however they want. What would Dojo 2 provide as a framework to facilitate this? We should probably avoid anything resembling dojo/layout.

    discussion 
    opened by rishson 12
  • CSS Pre/Post Processors for

    CSS Pre/Post Processors for "Internal" Use

    Dojo 1 used less as a pre-processor, but largely the team has felt that wasn't the best decision and subsequent development has focused on Stylus.

    SASS is very popular as a CSS pre-processor, but being based on Ruby increases the dependencies on what is largely a design-goal of having JavaScript based tooling for Dojo 2. There would have to be a compelling reason (in my opinion) to adopt SASS.

    In addition, with a desire to utilise FlexBox for layout with Dojo 2 widgets, there maybe a need for either using a post-processor or a some sort mixin solution (e.g. nib for Stylus) for the pre-processor to be able to transform the CSS.

    We also need how a pre-processor would work along side any sort of CSS modularity solutions (see #28).

    discussion 
    opened by kitsonk 12
  • Modularity of CSS

    Modularity of CSS

    One of the challenges with modular code is that it also can be a challenge to manage CSS in a modular way and be able for code to be explicit about what CSS is required. Web Components solves this problem by integrating the logic (JavaScript), structure (HTML) and presentation (CSS) into a single entity which is loaded.

    Since the direction of Dojo 2 isn't to solve this encapsulation problem via the Web Components architecture we need another mechanism for managing CSS. The options I can see we might consider:

    • Package Level CSS - Each package would have the CSS for all the widgets that it contains and additional themes could/would be loaded on top of the base CSS. A pre-processor can be used for making it easy to maintain. The challenges with this is that it becomes difficult to build time optimise any of the CSS and it becomes an all or nothing proposition.
    • Adopt css-modules - A specification of how to modularise CSS and keep it easily tied to the code. This has the advantage of making the CSS dependencies clear. This would require an AMD plugin, one that may even integrate with a pre-processor, and do a build optimization step. Because a definitive dependency graph could be determined at build time, this likely would end up in fairly well optimised built CSS.
    • Follow a pattern, like Radium, which favours inline styles which can be expressed in a syntax similar to CSS, but calculate and set the styles at DOM rendering time. This has the advantage of logic being able to manipulate the styling.

    There maybe other patterns we could consider, but these are the ones that come to my mind.

    enhancement accepted Epic 
    opened by kitsonk 12
  • Adopt ImmutableJS as a core design pattern

    Adopt ImmutableJS as a core design pattern

    Topic

    Should we adopt ImmutableJS as a core design pattern for Dojo 2?

    Background

    ImmutableJS provides a library for dealing with immutable data.

    Immutable data cannot be changed once created, leading to much simpler application development, no defensive copying, and enabling advanced memoization and change detection techniques with simple logic. Persistent data presents a mutative API which does not update the data in-place, but instead always yields new updated data.

    Immutable provides Persistent Immutable List, Stack, Map, OrderedMap, Set, OrderedSet and Record. They are highly efficient on modern JavaScript VMs by using structural sharing via hash maps tries and vector tries as popularized by Clojure and Scala, minimizing the need to copy or cache data.

    Immutable also provides a lazy Seq, allowing efficient chaining of collection methods like map and filter without creating intermediate representations. Create some Seq with Range and Repeat.

    Considerations

    • How would we integrate ImmutableJS?
    • How would it integrate to our build pipeline?
    • What APIs should we change or replace or augment to leverage ImmutableJS and how do we expose it to the end developer?
    discussion 
    opened by kitsonk 11
  • Upgrade guide for Dojo 2.0

    Upgrade guide for Dojo 2.0

    Although Dojo 2.0 not being ready yet, the dojo roadmap looks very promising! Glad to see that our framework of choice a few years ago is still evolving (a year back, we were biting our nails if Dojo 2.0 would ever see the light of day!) and nearing completion.

    In order for us to prepare for a possible upgrade to Dojo 2.0, it would be quite handy if there would be an upgrade/migration guide on how to proceed/prepare!

    I've found this migration guide, but it looks as if this is very old and doesn't reflect the (massive) changes made to the dojo core in 2.0.

    We're on Dojo 1.11.1 now and would like to make an estimate on how much work it would be to upgrade to 2.0. I'm hoping that it's somewhat backwards compatible, but looking at all the new packages i'm guessing that this is not the case. Please correct me if i'm wrong :)

    Keep up the good work and thanks in advance!

    discussion beta3 
    opened by paulrutter 9
  • [info] OpenJS - upcoming conference news

    [info] OpenJS - upcoming conference news

    Wanted to share this FYI out to the Dojo community to let ya’ll know that the OpenJS Foundation has opened its call for speakers for the upcoming virtual OpenJS World event on 9 June 2021. We would love to make sure the project is well represented in the conference content! If anyone is interested and has more questions, wants help writing an abstract, or wants to get involved with the CFP Reviews, email me at jory @ thestoryofjory dot com or ping me in Slack.

    We’d also love your help getting the word out about the event - if you’d be up to putting a link or banner on the project website, tweeting from your project account, etc. we would be very grateful!

    opened by jorydotcom 0
  • after installed dojo/cli, and running dojo command, the programe print

    after installed dojo/cli, and running dojo command, the programe print "Invalid response from npm search"

    Hello, I'm following your website (https://dojo.io/tutorials/001_static_content/), and used npm to install @dojo/cli and @dojo/cli-create-app, the execute command like this :

    #!/bin/bash
    npm install -g @dojo/cli  
    npm install -g @dojo/cli-create-app
    dojo create app --name first-dojo-app   # right here, the program noticed npm install error, and just exit, the error msg notice because dojo-interface was deprecated, so install is not totally finish, so i use yarn to install
    cd first-dojo-app
    yarn # instead of not full npm install
    dojo build -m dev -w memory -s  
    # after execute this command, the dojo print "Invalid response from npm search" info, but i don't know where the invalid response is, and what the invalid content is
    

    This is my system info and npm,node env version: 1, node v8.4.0 2, npm v5.3.0 3, Ubuntu 16.04.2 LTS 4, yarn v1.1.0

    Is that system environment not satisfield? Should I need to release version? Or change the npm source url? Or dojo cli tools is not compatible with the Linux system?

    I wanna to use dojo, and wanna study by dojo website, but cannot success create app step by step, could you help, Thanks a lot

    opened by tun100 5
  • Unable to get custom JavaScript  files into Dojo 2

    Unable to get custom JavaScript files into Dojo 2

    HI,I am trying to include custom JavaScript files using script tag in index.html.But in browser it shows the error 404 file not found.I have tried all different types of including.some one can tell me how can i include a js files into Dojo 2.

    opened by Chiru3 1
  • dojo/interop fails

    dojo/interop fails

    I reported this already under: https://github.com/dojo/interop/issues/36 but this bug tracker seems not to be very active, so I am cross posting it here.

    Both, the sample code and the setup from the turorial: https://dojo.io/tutorials/1040_dojo1_dijits/ and the docs: https://dojo.io/docs/index.html#doc--dojo__interop__v2_0_0 give me the error: Module build failed: ReferenceError: define is not defined

    for details see the full bug report under: https://github.com/dojo/interop/issues/36

    opened by ziegi 2
  • files such as images don't work with ESM style imports

    files such as images don't work with ESM style imports

    At the moment to import images in Dojo you have to use require.

    For example say we want to use an image in a widget, we must do it like so:

    const bottomImage = require('./../images/placeholder.png') 
    

    It would be consistent and idomatic to be able to do image imports as we do with modules like this:

    import bottomImage from './../images/placeholder.png';
    
    opened by JamesLMilner 0
Owner
Dojo
A Progressive TypeScript Framework for Modern Web Apps
Dojo
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
Coding Dojo - Frontend

Front-end Coding Dojo Sejam bem vindos(as) ao Coding Dojo! Preparamos alguns desafios para a sua equipe. Para cada desafio, você deve escrever um códi

Juntos Somos Mais 19 Oct 11, 2022
Tool made to easily merge multiple GTA 5 vehicle meta files.

mmVehiclesMetaMerger Tool made to easily merge multiple GTA5 vehicle meta files. Showcase Go to Youtube video. Download Click here to go to the releas

Mateusz Mleczek 11 Jan 2, 2023
Bruh. Generalized Meta transaction dispatcher.

metuh A generalized meta-transaction library for Ethereum-flavour chains. Not overengineered like all of OpenZeppelin. Inspired heavily by the Lens Di

Liam Zebedee 2 Mar 22, 2022
Utilities for meta-level interactions with the Prisma toolkit in Node.js.

@prisma-spectrum/reflector Utilities for meta-level interactions with the Prisma toolkit in Node.js. ⚠️ Warning: This is not a formal Prisma product l

Prisma 12 Dec 16, 2022
POC. Simple plugin-based meta-programming platform on top of Typescript

comp-plugins POC Running: yarn to install dependencies yarn dev to run the script The what The script creates a new typescript compiler instance (prog

Ciobanu Laurentiu 3 Jul 14, 2022
It redirects the website request from facebook to any blog while keeping the meta data for the each link.

Vercel Redirect It redirects the website request from facebook to any blog while keeping the meta data for the each link. This app uses Next.js and th

Vishwa R 8 Dec 4, 2022
The Main Purpose The main purpose of creating an anaonline information system, as an effort responsive to the management of the data of the Members of the Persis Youth based on information technology systems

landing-page-pp landing-page-pp.vercel.app #The Main Purpose The main purpose of creating an anaonline information system, as an effort responsive to

Hilman Firdaus 6 Oct 21, 2022
This is our second school project in HTML 5, CSS 3 and JS. In this website you can find very interesting information about the countries around the world.

Team Geonomy ?? About This is a website about with interatcive map and very interesting information about different coutries ??️ Used technologies Use

Stanislav Tashev 33 Nov 23, 2022
Awesome Books project : An online Book Library. Storing book information using local storage and displaying it as a list on HTML page

This is project is my based on building an online Book Library. Storing book information using local storage and displaying it as a list on html page

Richard Chileya 7 Nov 11, 2022
Provides information on official divisional administrative regions of Portugal

GEO PT API Provides information on official divisional administrative regions of Portugal (based on "Carta Administrativa Oficial de Portugal, 2020",

João Pimentel Ferreira 75 Dec 27, 2022
Keep your sensitive information out of chat logs, emails, and more with heavily encrypted secrets.

Free encrypted secret sharing for everyone! This application is to be used to share encrypted secrets cross organizations, or as private persons. Hemm

Hemmelig 246 Dec 31, 2022
Primary repository for all information related to Fast-Floward Bootcamp session 1

⏩ Fast Floward Welcome to Fast Floward! We are excited to have you here. This repository is where you will find all content, resources, and links for

Decentology 44 Dec 23, 2022
A super simple and lightweight API to get crypto token live information.

TokenStats ?? ?? A super simple and lightweight API to get crypto token live information. APP URL https://tokenstats.herokuapp.com/ Quick Start To get

Abdulfatai Suleiman 21 Jun 28, 2022
Simple scripts for crawling shopee's shop and product information from shopee.vn

Table of Contents About The Project Built With Getting Started Prerequisites Installation Usage License About The Project shopee-crawler is a simple p

Hoàng Kim Minh 5 Dec 13, 2022
CryptoList allows users to find out the latest information about top cryptocurrencies

CryptoList allows users to find out the latest information about top cryptocurrencies. The app allows users to find the most popular currencies, sort them out by market cap, gainers, and losers.

Eapen Zacharias 4 Aug 19, 2022