Skip to content

Code Generators should have a central place for naming Nova Services #25

@tsukhu

Description

@tsukhu

Currently if we generate the projects using the CLI for example

ara new:nova novas/global -t vue

There are two files we need to modify in case we need to change the name of the nova service from Example (if we are enabling SSR as well)

  • client.js
  • index.js

There is a change that the developer may miss out modifying the name in all places.

Possible Solution

Add a common place where the name is specified for example

constants.js

const NOVA_NAME = 'VueNovaMFE';

export default NOVA_NAME;

Now in each of the files index.js and client.js

include it

import NOVA_NAME from './constants';

The index.js could look like this

hypernova({
  devMode: process.env.NODE_ENV !== 'production',
  getComponent(name) {
    if (name === NOVA_NAME) {
      return renderVue(name, Vue.extend(MonthlySalesChart));
    }
  },
  port: process.env.PORT || 3000,

  createApplication() {
    const app = express();

    app.use('/public', express.static(path.join(process.cwd(), 'dist')));

    return app;
  },
});

Similarly the client.js could look like this

import NOVA_NAME from './constants';

const render = (name, { node, data }) => {
  if (name === NOVA_NAME) {
    return mountComponent(Vue.extend(MonthlySalesChart), node, data);
  }
};

document.addEventListener('NovaMount', ({ detail }) => {
  const { name, id } = detail;

  const payload = loadById(name, id);

  if (payload) {
    render(name, payload);
  }
});

load(NOVA_NAME).forEach(render.bind(null, NOVA_NAME));

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions