npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

jquery-viewjs

v1.0.8

Published

A really simple helper to render yours view, using jquery

Readme

jquery-viewjs

jquery-viewjs é um plugin jQuery projetado para separar a codificação HTML do JavaScript, proporcionando uma maneira eficiente de renderizar e manipular HTML e atributos através de métodos flexíveis e reutilizáveis.

🚀 Instalação

Você pode instalar jquery-viewjs usando npm:

npm install jquery-viewjs

Outra alternativa, inclua o jQuery no seu projeto (caso ainda não tenha):

<script src="https://code.jquery.com/jquery-3.x.x.min.js"></script>

Em seguida, adicione o arquivo JavaScript do plugin jquery-viewjs:

<script src="path/to/jquery-viewjs.js"></script>

Dependência: Este plugin depende do jQuery.

🔧 Uso Básico

Uma vez incluído, o plugin adiciona novos métodos ao jQuery, que podem ser usados diretamente em qualquer elemento HTML selecionado. Simplificando a utilização das funcionalidades do jQuery $.html, $.val, $.css entre outras.

📜 Métodos

O plugin oferece os seguintes métodos para manipulação de dados e renderização:

1. assign

Atribui valores em um elemento selecionado via jQuery.

$('#scope').view('assign', { 
    key1: 'value1', 
    key2: 'value2' 
});

2. extract

Extrai dados de um elemento jquery, baseado no objeto fornecido como parâmetro.

var myExtractedValues = $('#scope').view('extract', { 
    key1: 'value1', 
    key2: 'value2' 
});

3. iterate

Faz um loop em uma coleção de dados e atribui os valores de cada objeto clonando um novo template e adicionando eo elemento jQuery.

$('#scope').view('iterate', {
  // Template para clonagem
  template: $('.template-area .my-template'), 
  // Coleção de dados
  collection: [ /* Array de objetos */ ], 
  // Chamada antes de renderizar 
  callbackBeforeItem: function($tpl, obj) {}, 
  // Chamada após renderizar
  callbackItem: function($tpl, obj) {}, 
  // Limpa o elemento jQuery antes de iniciar
  cleanBeforeInit: true, 
  // Método utilizado para inserir o elemento 'append' ou 'prepend'
  methodInsert: 'append',
  // Ordena a coleção pelo nome do campo informado 
  sortBy: 'nomeDoCampo'
});

4. extractCollection

Faz um loop em um elemento jQuery procurando pelo seletor informado e extrai os dados de cada elemento formando uma coleção de dados.

$('#example').view('extractCollection', {
  // Objeto json com o formato de dados a serem extraídos
  valueObject: {key1:null,key2:null}, 
  // String com o seletor utilizado para encontrar cada trecho a ser extraído 
  selector: '.my-selector-class', 
  // Chamada após a extração dos dados de um elemento 
  callbackItem: function($tpl, obj) {} 
});

5. unreplace

Restaura o conteúdo original do elemento, desfazendo a substituição realizada pelo plugin após ter sido utilizado um caso de replace.

$('#example').view('unreplace');

Execução no javascript

//Para a execução no javascript as chamadas serão similares como a seguir
$('meuSeletorDeObjeto').view('minhaAcao',meuObjetoParaAplicar)
  • meuSeletorDeObjeto - é o seletor utilizado normalmente pelo jQuery para determinar um escopo da página html.
  • minhaAcao - é o que o plugin executará no elemento jquery selecionado.
    • assign - renderiza um objeto no elemento jquery.
    • iterate - renderiza uma coleção de objetos no elemento jquery.
    • extract - extrai os valores do elemento jquery e retorna um objeto preenchido.
    • extractCollection - extrai uma coleção de objetos do elemento jquery
  • meuObjetoParaAplicar - é um objeto qualquer com valores que deva ser apresentado no html

Configuração no html

Para o funcionamento você deverá adicionar no seu escopo html alguns atributos nos locais desejados.

  • Para incluir um texto adicione ao elemento um atributo iniciando com data-html- seguido com o nome do atributo desejado, isto irá executar
    • data-html-nomeAtributo
  • Para definir o valor de um input adicione ao elemento um atributo iniciando com data-val- seguido com o nome do atributo desejado
    • data-val-nomeAtributo
  • Para criar ou definir o valor de atributo no elemento adicione ao elemento um atributo iniciando com data-attr- seguido com o nome do atributo desejado
    • data-attr-nomeAtributo
  • Para atualizar um trecho do valor de um atributo no elemento adicione um atributo iniciando com data-replace- seguido com o nome do atributo desejado.
    • data-replace-nomeAtributo

📦 Exemplo prático do método 'assign'

Javascript:


//Vamos renderizar o objeto abaixo na página
var myObject = {
    idHero:338,
    heroName:'Yami Sukehiro',
    heroAge:28,
    page:'Yami_Sukehiro'
}
//Para executar a renderização de um objeto faça como a seguir
$('#example').view('assign', myObject);

Isto irá selecionar o elemento html com id 'exemple', e irá renderizar o objeto myObject declarado anteriormente.

HTML:

<div id="example" data-attr-idHero="data-idHero">
    <div>
        <label>Name</label>
        <span data-html-name ><span>
    </div>
    <div>
        <label>Age</label>
        <input type="text" data-html-age >
    </div>
    <a href="https://en.wikipedia.org/wiki/{page}" data-replace-page="href" >Wiki hero</a>
</div>

Resultado HTML:

<div id="example" data-attr-idHero="data-idHero" data-idHero="338">
    <div>
        <label>Name</label>
        <span data-html-name >Jhonn Smith<span>
    </div>
    <div>
        <label>Age</label>
        <input type="text" data-html-age value="22">
    </div>
    <a href="https://en.wikipedia.org/wiki/Yami_Sukehiro" data-replace-page="href" >Wiki hero</a>
</div>

Onde havia data-attr-idHero foi criado um novo atributo com o nome data-idHero por sua vez com o valor 338 que estava no objeto.

  • Algo como: $('[data-attr-idHero]').attr('data-idHero',myObject.idHero)

Onde havia data-html-name foi atribuído no html o valor do de myObject.name

  • Algo como: $('[data-html-name]').html(myObject.idHero)

Onde havia data-val-age foi atribuído no html o valor do de myObject.age

  • Algo como: $('[data-val-age]').val(myObject.age)

📦 Exemplo prático do método 'extract'

HTML:

<div id='escope'>
    <div data-id="99871">
        <label>Name</label>
        <span data-html-name >Cicero</span>
    </div>
    <div>
        <label>Phone</label>
        <span data-html-phone >+55 (61) 99962-6262</span>
    </div>
    <div>
        <label>Age</label>
        <span data-html-age >36</span>
    </div>
    <div>
        <label>Favorite color</label>
        <input type="text" data-val-favoriteColor value="red">
    </div>
    <div>
        <label>Drink</label>
        <select data-val-drink >
            <option value="1">Cofee</option>
            <option value="2" checked="checked">Tea</option>
        </select>
    </div>
</div>

Javascript:

var readVar = $('#escope').view('extract',{
    name:null,
    phone:null,
    age:null,
    favoriteColor:null,
    drink:null
});
console.log(readVar);

Saída

{
    name:'Cicero',
    phone:'+55 (61) 99962-6262',
    age:'36',
    favoriteColor:'red',
    drink:'2'
}

📦 Exemplo prático do método 'iterate'

O método iterate irá executar na prática um loop clonando o template e aplicando o método 'assign' em cada item da coleção para cada clonagem do template passado.

Javascript:

var myCollection = [
    {id:3,name:'Cicero',phone:'999626262',age:'36',usercolor:'red'},
    {id:2,name:'Nero',phone:'88551321',age:'28',usercolor:'blue'},
    {id:7,name:'Cezar',phone:'655123321',age:'32',usercolor:'gray'},
    {id:1,name:'Caligula',phone:'551232423',age:'48',usercolor:'green'},
];
$('.myCombo').view('iterate',{
    template:$('<option data-val-id data-html-name >'),
    collection: myCollection,
    sortBy: 'name'
});
$('.myList').view('iterate',{
    template:$('.templates .item-list'),
    collection: myCollection,
    sortBy: 'age'
});
$('.myTable').view('iterate',{
    template:$('.templates .item-table'),
    collection: myCollection,
    sortBy: 'id'
});

HTML:

<!-- templates é um trecho da tela que pode ficar escondido para ser clonado -->
 <div class="templates" style="display:none">
    <ul>
        <li class="item-list">
            <span data-html-name></span> (<span data-html-age></span>)
        <li>
    </ul>
    <table>
        <tr data-attr-id="data-id" class="item-table">
            <td data-html-id ></td>
            <td ><input type="text" data-val-name  data-css-usercolor="color" /></td>
            <td data-html-age ></td>
            <td><a href="javascript:alert('Edit {name}')" data-replace-name='href' >Edit</a></td>
        </tr>
    </table>
</div>
<!-- os elementos que serão iterados -->
<select class="myCombo" ></select>
<ul class="myList" ></ul>
<table>
    <thead>
        <tr>
            <th>Id</th>
            <th>Name</th>
            <th>Phone</th>
            <th>Age</th>
            <th>Alert</th>
        </tr>
    </thead>
    <tbody class="myTable"></tbody>
</table>

Resultado:

<!-- templates é um trecho da tela que pode ficar escondido para ser clonado -->
<div class="templates" style="display:none">
    <ul>
        <li class="item-list">
            <span data-html-name=""></span> (<span data-html-age=""></span>)
        </li><li>
        </li></ul>
    <table>
        <tbody><tr data-attr-id="data-id" class="item-table">
                <td data-html-id=""></td>
                <td><input type="text" data-val-name="" data-css-usercolor="color"></td>
                <td data-html-age=""></td>
                <td><a href="javascript:alert('Edit {name}')" data-replace-name="href">Edit</a></td>
            </tr>
        </tbody>
    </table>
</div>
<!-- os elementos após sofrerem a iteração dos registros -->
<select class="myCombo">
    <option data-val-id="" data-html-name="" value="1">Cicero</option>
    <option data-val-id="" data-html-name="" value="2">Nero</option>
    <option data-val-id="" data-html-name="" value="3">Cezar</option>
    <option data-val-id="" data-html-name="" value="4">Caligula</option>
</select>
<ul class="myList">
    <li class="item-list">
        <span data-html-name="">Cicero</span> (<span data-html-age="">36</span>)
    </li>
    <li class="item-list">
        <span data-html-name="">Nero</span> (<span data-html-age="">28</span>)
    </li>
    <li class="item-list">
        <span data-html-name="">Cezar</span> (<span data-html-age="">32</span>)
    </li>
    <li class="item-list">
        <span data-html-name="">Caligula</span> (<span data-html-age="">48</span>)
    </li>
</ul>
<table>
    <thead>
        <tr>
            <th>Id</th>
            <th>Name</th>
            <th>Phone</th>
            <th>Age</th>
            <th>Alert</th>
        </tr>
    </thead>
    <tbody class="myTable"><tr data-attr-id="data-id" class="item-table" data-id="1">
            <td data-html-id="">1</td>
            <td><input type="text" data-val-name="" data-css-usercolor="color" style="color: red;"></td>
            <td data-html-age="">36</td>
            <td><a href="javascript:alert('Edit Cicero')" data-replace-name="href" data-view-replaced="true">Edit</a></td>
        </tr><tr data-attr-id="data-id" class="item-table" data-id="2">
            <td data-html-id="">2</td>
            <td><input type="text" data-val-name="" data-css-usercolor="color" style="color: blue;"></td>
            <td data-html-age="">28</td>
            <td><a href="javascript:alert('Edit Nero')" data-replace-name="href" data-view-replaced="true">Edit</a></td>
        </tr><tr data-attr-id="data-id" class="item-table" data-id="3">
            <td data-html-id="">3</td>
            <td><input type="text" data-val-name="" data-css-usercolor="color" style="color: gray;"></td>
            <td data-html-age="">32</td>
            <td><a href="javascript:alert('Edit Cezar')" data-replace-name="href" data-view-replaced="true">Edit</a></td>
        </tr><tr data-attr-id="data-id" class="item-table" data-id="4">
            <td data-html-id="">4</td>
            <td><input type="text" data-val-name="" data-css-usercolor="color" style="color: green;"></td>
            <td data-html-age="">48</td>
            <td><a href="javascript:alert('Edit Caligula')" data-replace-name="href" data-view-replaced="true">Edit</a></td>
        </tr></tbody>
</table>

Neste caso foi criado um combo com quatro opções uma para cada registro, uma lista com quatro itens um para cada registro e uma tabela com quatro linhas uma para cada registro. Pois foi aplicado um assign para cada registro.

📦 Exemplo prático do método 'extractCollection'

Este método funciona como uma operação inversa ao iterate, onde é extraído uma coleção de dados de um elemento jQuery. Como exemplo podemos utilizar o resultado do exemplo anterior.

Javascript:

var extracted = $('.myTable').view('extractCollection', {
  valueObject: {id:null,name:null,phone:null,age:null}, 
  selector: '.item-table', 
});
console.log(extracted)

HTML:

<!-- Considere aqui o resultado do exemplo anterior -->

Resultado:

[
    {"id": "1","name": "Caligula","phone": null,"age": "48"},
    {"id": "2","name": "Nero","phone": null,"age": "28"},
    {"id": "3","name": "Cicero","phone": null,"age": "36"},
    {"id": "7","name": "Cezar","phone": null,"age": "32"}
]

📝 Licença

Este projeto é licenciado sob a Apache License, Version 2.0.