Git Product home page Git Product logo

Comments (9)

mmun avatar mmun commented on May 12, 2024

@sandstrom The problem with proxies is that they are a leaky abstraction that is also very viral. I'm looking forward to removing the linked piece of code. Even our base Stream class has to have special code to work with Proxies: https://github.com/emberjs/ember.js/blob/master/packages/ember-metal/lib/streams/stream.js#L180-L202.

I would much prefer experimenting with how we can push decoration into userspace.

from rfcs.

sandstrom avatar sandstrom commented on May 12, 2024

@mmun I understand the concern.

If the unwrapping happened in the actions-handling of routes and components instead, is that something you'd prefer? (that'll work equally well for all use-cases I can think of)

from rfcs.

sandstrom avatar sandstrom commented on May 12, 2024

friendly ping @mmun 😄

from rfcs.

mmun avatar mmun commented on May 12, 2024

@sandstrom Sorry, I missed this. I think that implicit unwrapping anywhere is the codesmell of a bad pattern. So I'm not a fan.

from rfcs.

stefanpenner avatar stefanpenner commented on May 12, 2024

ES6 proxies (once enough platforms support) will be an abstraction that doesn't have the same issues.

The question is, what should exist in the interim? How do we minimize the leaks and confusions of today

from rfcs.

sandstrom avatar sandstrom commented on May 12, 2024

Decoration is useful in various situations, and a common pattern across languages and frameworks. For decoration to work well with actions unwrapping is desired — which is why this is implemented in Ember.

I understand that you dislike it, but it must not be default. Ember is extensible in many ways, which is great. But this is a place where it's currently hard.

Say, for example, there was a method one could override in routes/components—to act on the action arguments before they were passed on to the action-handler—that would be enough. There wouldn't even be unwrapping in the framework, only the ability to implement it if needed.

from rfcs.

stefanpenner avatar stefanpenner commented on May 12, 2024

Decoration is useful in various situations, and a common pattern across languages and frameworks. For decoration to work well with actions unwrapping is desired — which is why this is implemented in Ember.

We don't argue it isn't useful, rather in JS today it some with a hefty abstraction leak cost.

from rfcs.

mmun avatar mmun commented on May 12, 2024

I get decorators. I'm fine with explicit unwrapping. I'm not fine with implicit unwrapping. I've been burned too many times, across multiple languages and frameworks.

Concretely, I never want to think "Is this a controller or is this a model?" ever again.

My opinion may not reflect the opinions of the rest of the core team.

from rfcs.

sandstrom avatar sandstrom commented on May 12, 2024

If it was possible to 'sub-class' the action helper (basically get a chance to act on action helper invocations) adding decorator-unwrapping would be easy. It would also allow for other things, for example logging of all action calls.

This should be possible now, with actions being simple functions one can curry or wrap a function to provide the desired unwrapping-functionality.

Closing this.

from rfcs.

Related Issues (20)

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.