Giter Club home page Giter Club logo

observable-to-standalone's Introduction

Observable notebook to standalone application

Various methods to migrate an Observable notebook to a standalone webpage.

Example notebook

The joyplot notebook is used as an example throughout this repository.

Screenshot of a joyplot notebook

Examine the results of the migration to a standalone application:

Using ObservableHQ runtime

An Observable notebook can be run as a standalone application using the @observable/runtime library, outside of the Observable platform.

The recommended method is to bundle all the modules into a single JavaScript file: "Bundle" method

Diagram for the "Bundle" method

See it in action by Philippe Rivière on the Spherical contours notebook:

Two simpler methods are possible. The first one is to download and extract tgz from Observable notebook to use the default index.html file provided in the tgz file: "Default Observable export" method

Diagram for the "Default Observable export" method

The second simpler method is to get JavaScript modules from api.observablehq.com at runtime: "Request Observable API" method

Diagram for the "Request Observable API" method

Independent of ObservableHQ runtime

A totally different approach to migrate an Observable notebook to a standalone application is to rewrite the code from scratch: "Rewrite from scratch" method

Diagram for the "Rewrite from scratch" method

References

Credits

Project developed for the LIRIS M2i project by Sylvain Lesage with the help of Philippe Rivière, Romain Vuillemot and Mike Bostock.

observable-to-standalone's People

Contributors

dependabot[bot] avatar fil avatar severo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

observable-to-standalone's Issues

how to update the notebook

Ideally yarn notebook && yarn serve would update the notebook's code and serve the new version; but it seems that it's not enough currently: I have to do all of

rm -rf node_modules/ src/notebook/ yarn.lock
yarn notebook && yarn

put src/notebook in a vendor directory?

I don't like downloaded code to be mixed with main.js

Another solution would be to put main.js in a different directory (after all it is only html/wrapper/container/glue).

File uploads?

I don't think we can easily reuse the file uploader from observable. (Would love to be proven wrong.)

Capture d’écran 2019-11-19 à 16 42 23

Add an example with a web worker

  const importScript = u =>
    window.location.href.includes(".observableusercontent.com")
      ? `https://unpkg.com/${u}`
      : `${window.location.href.replace(/\/[^/]*$/, "")}/${u}.js`;

  const worker = createWorkerFrom(`
  // load external scripts
  importScripts("${importScript("d3@5")}");
  importScripts("${importScript("d3-delaunay@5")}");
  …

`)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.