Skip to content

Latest commit

 

History

History
 
 

external-views

@fluid-example/app-integration-external-views

The external-views example has a dice and a button. Clicking the button re-rolls the dice and persists the value in a SharedMap.

This example demonstrates the external-views pattern. In this pattern, the container code (containerCode.ts) establishes the model and controller logic (the DiceRoller, diceRoller.ts) but it does not establish the view code (view.tsx) or its binding to the model/controller. This step is instead left up to the consumer of the container to do (for this example, in app.ts).

This is distinct from the container-views pattern, where the container brings a view and its binding to the model/controller as well. Although it can sometimes be convenient to have a view provided by the container, the container-views pattern may result in less view flexibility (depending on what is exposed to the container consumer) and larger-than-necessary bundle size (especially for headless usage). The external-views pattern is therefore recommended over the container-views pattern for general use.

Getting Started

You can run this example using the following steps:

  1. Enable corepack by running corepack enable.
  2. Run pnpm install and pnpm run build:fast --nolint from the FluidFramework root directory.
    • For an even faster build, you can add the package name to the build command, like this: pnpm run build:fast --nolint @fluid-example/app-integration-external-views
  3. In a separate terminal, start a Tinylicious server by following the instructions in Tinylicious.
  4. Run pnpm start from this directory and open http://localhost:8080 in a web browser to see the app running.

Testing

    npm run test:jest

For in browser testing update ./jest-puppeteer.config.js to:

  launch: {
    dumpio: true, // output browser console to cmd line
    slowMo: 500,
    headless: false,
  },

Data model

Dice Roller uses the following distributed data structures:

  • SharedDirectory - root

Contribution Guidelines

There are many ways to contribute to Fluid.

Detailed instructions for working in the repo can be found in the Wiki.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

This project may contain Microsoft trademarks or logos for Microsoft projects, products, or services. Use of these trademarks or logos must follow Microsoft’s Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.

Help

Not finding what you're looking for in this README? Check out fluidframework.com.

Still not finding what you're looking for? Please file an issue.

Thank you!

Trademark

This project may contain Microsoft trademarks or logos for Microsoft projects, products, or services.

Use of these trademarks or logos must follow Microsoft's Trademark & Brand Guidelines.

Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.