Giter Club home page Giter Club logo

Comments (14)

ryoikarashi avatar ryoikarashi commented on June 2, 2024 6

any update?

from pug-loader.

AmirTugi avatar AmirTugi commented on June 2, 2024 4

For those of you who seek a hack for the for loop - the solution in #47 works if you define the var in the locals:

- locals namesArray = ['Amir', 'Tugi']
- each element in locals.namesArray
    - locals.element = element
    include path/to/file // <-- The file will now be able to access the variable via #{element}

With that said, any progress on the real official solution yet?

from pug-loader.

antpaw avatar antpaw commented on June 2, 2024 1

@ryoikarashi you can use my fork for now https://github.com/antpaw/pug-loader

from pug-loader.

antpaw avatar antpaw commented on June 2, 2024 1

@damassi this is the fork i have used to transfer my ezel based setup to webpack. The only downside I can see is that the bundle size will get bigger (extremely bigger, in extrem cases), but it uses the same convention as the browserify compiler ect, so coming from other compilers should not cause noticeable size difference. But it could be done more efficient if you would somehow "collect" all the variable form the closer scope and pass them to the included template function instead of inlining it. I think this will require a major change in the internal workings of pug, and am not even sure if the "collecting" part is possible.

from pug-loader.

damassi avatar damassi commented on June 2, 2024 1

@antpaw - Can confirm your fork fixed the issue. Thanks again 👍

from pug-loader.

antpaw avatar antpaw commented on June 2, 2024

I've found this answer #47 I strongly disagree with this idea.

This is a important template feature and using locals is not documented in any way in pug/jade documentation. Setting something on a global object locals will always lead to side effects that might cause unexpected behaviour. It might be not a big deal for client side, but in a isomorphic app where partials have to work on node as well you might be modifying unintentionally object references for different requests.

The best fix for this would be if pug had two different syntaxes for include that let programmers decide to inline or to require the template. Or a syntax that provides a way to define variables that should be passed down to the include along with already set variables.

Chances for this to happen are almost zero i would say, so I suggest that the library should inline every "include".

from pug-loader.

TimothyGu avatar TimothyGu commented on June 2, 2024

I guess @sokra (who initially implemented template inlining) didn't realize this incompatibility. I agree with your evaluation, and I'm okay with the idea of adding a require plugin in pug-loader. But until such a keyword is implemented, I'm inclined to keep the status quo as it is, so that existing Jade (and jade-loader) users can more easily upgrade to Pug.

from pug-loader.

forbaz avatar forbaz commented on June 2, 2024

Hello everyone.
I don't know why this happen, but if in included file we call any mixin variables that we passed returned their value.
For example:

//- empty.pug
mixin empty()
  if false
    p nothing here
//- template1.pug
include empty.pug
for myScopedVar in [1, 2, 3]
  include low_level_template
//- low_level_template.pug
+empty()
p= myScopedVar

And this work. But if we just delete line with +empty() mixin call, myScopedVar return undefined.
Maybe this can help someone.

from pug-loader.

damassi avatar damassi commented on June 2, 2024

@TimothyGu - Any tips as to how to go about implementing this would be appreciated. This issue just put a hard stop on our large webpack refactor

from pug-loader.

damassi avatar damassi commented on June 2, 2024

Thanks @antpaw - will look into it!

from pug-loader.

DevanB avatar DevanB commented on June 2, 2024

Any movement on getting this fixed?

from pug-loader.

CharlesGouldmann avatar CharlesGouldmann commented on June 2, 2024

Any progress on this?

For now I will use @antpaw 's fork which seems to work great.

from pug-loader.

titantwentyone avatar titantwentyone commented on June 2, 2024

It would be great if the docs could be updated to relfect this. Took me a while to figure out what was happening here. @AmirTugi's fix worked perfectly for me.

from pug-loader.

webdiscus avatar webdiscus commented on June 2, 2024

Following simple example work with the pug-loader:

- var items = ['Hello', 'pug!']
each str in items
  include ./include-var-str

file include-var-str.pug:

i= str

The local variable str defined in each in cycle is available in included template.

Output:

<i>Hello</i><i>pug!</i>

from pug-loader.

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.