Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать правильно и красиво ? (https://javascript.ru/forum/misc/73038-kak-sdelat-pravilno-i-krasivo.html)

WqR128 16.03.2018 10:15

Как сделать правильно и красиво ?
 
В общем есть код:
$.getJSON("https://spreadsheets.google.com/feeds/list/" + spreadsheetID + "/od6/public/values?alt=json", function(data) {
    $(data.feed.entry).filter(function(){
  if(this.gsx$slag.$t===location.pathname)  return $('section').prepend('<header><h2>'+this.gsx$title.$t+'</h2></header><img src="'+this.gsx$image.$t+'"/><p>'+this.gsx$content.$t+'</p>').exit(); 
  });
  $(data.feed.entry).each(function(){
    $('section').prepend('<article class="'+this.gsx$type.$t + '"><header><h2>' + this.gsx$title.$t + '</h2></header><img src="'+ this.gsx$image.$t +'"/></article>');
  });
 });

Он конечно работает, но выглядит стремно ( Подскажет кто как сделать покрасивей?

ksa 16.03.2018 10:33

Цитата:

Сообщение от WqR128
Подскажет кто как сделать покрасивей?

Какие у тебя критерии красивости?

Напихать в имена свойств помимо $ еще чего-то. :D

Nexus 16.03.2018 10:43

jq.filter как-то криво используется, по-моему.
Что делает функция "text" - загадка такая же как и тип объекта "data.feed.entry".

WqR128 16.03.2018 11:05

Про text() забудем, а data.feed.entry массив массивов object

Цитата:

(16) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
0
:
category
:
[{…}]
content
:
{type: "text", $t: "title: title1, content: <h3>rest</h3>555, image: https://unsplash.it/800/600?image=1, slag: /1"}
gsx$content
:
{$t: "<h3>rest</h3>555"}
gsx$id
:
{$t: "1"}
gsx$image
:
{$t: "https://unsplash.it/800/600?image=1"}
gsx$slag
:
{$t: "/1"}
gsx$title
:
{$t: "title1"}
gsx$type
:
{$t: ""}
gsx$video
:
{$t: ""}
id
:
{$t: "https://spreadsheets.google.com/feeds/list/1wcExie…hPzpYkA9mLBISZaPKzjfStq9c/od6/public/values/cokwr"}
link
:
[{…}]
title
:
{type: "text", $t: "1"}
updated
:
{$t: "2018-03-16T07:05:17.026Z"}
__proto__
:
Object
1
:
{id: {…}, updated: {…}, category: Array(1), title: {…}, content: {…}, …}
2
:
{id: {…}, updated: {…}, category: Array(1), title: {…}, content: {…}, …}
3
:
...

Nexus 16.03.2018 11:16

WqR128, а что-за метод "delete" вы используете в строке 3?

WqR128 16.03.2018 11:30

Nexus, согласен exit() выглядит уместнее

ksa 16.03.2018 11:34

WqR128, зачем ты $ в имена свойств наставил?

WqR128 16.03.2018 11:41

ksa, ну мне $ не нужен, но гугла такие переменные

Nexus 16.03.2018 11:44

Цитата:

Сообщение от WqR128
Nexus, согласен exit() выглядит уместнее

Вы jQuery используете?

WqR128 16.03.2018 11:50

Nexus, да

Nexus 16.03.2018 11:54

WqR128, а в jq есть методы "delete" и "exit"?)

WqR128 16.03.2018 11:59

Nexus , () по вашему мнению лучше ?)

Nexus 16.03.2018 12:04

WqR128, что вы вообще пытаетесь сделать используя метод "filter"?

WqR128 16.03.2018 12:15

Nexus , ок если красивее то пусть будет "each"

Nexus 16.03.2018 12:18

WqR128, :-?
Я вроде бы не говорил, что что-то в коде у вас "некрасиво", а спросил что вы пытаетесь сделать...

WqR128 16.03.2018 12:28

Фильтр просто так.... Лично меня коробит, что надо делать 2 прогона массива

Nexus 16.03.2018 12:34

Цитата:

Сообщение от WqR128
Фильтр просто так

В смысле "просто так"? :-?

Может лучше так сделать?
$.getJSON("https://spreadsheets.google.com/feeds/list/" 
          + spreadsheetID + "/od6/public/values?alt=json", function(data) {
    var html=[];
    $(data.feed.entry).each(function() {
        if (this.gsx$slag.$t === location.pathname)
            html.push(
              '<article class="' + this.gsx$type.$t + '"><header>'
              	+'<h2>' + this.gsx$title.$t + '</h2>'
              +'</header><img src="' + this.gsx$image.$t + '"/></article>'
            );
    });
  	$('section').prepend(html.reverse().join(''));
});

Dilettante_Pro 16.03.2018 12:47

М.Б. как-то в таком стиле? (строки 13-24)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

<section></section>
<script>
var test = { 
gsx$type:{$t:'testclass'},
gsx$title:{$t:'Test Title'},
gsx$image:{$t:'http://javascript.ru/cat/list/donkey.gif'}
};

$('section').html('test content');

var art = $('<article/>', {
    class: test.gsx$type.$t,
    html: $('<header/>', { 
         html: $('<h2/>', { 
                text: test.gsx$title.$t 
        }) 
    }) ,
});
art.append( $('<img/>', { 
         src: test.gsx$image.$t 
    }))
art.prependTo($('section'));

</script>

ksa 16.03.2018 13:16

Цитата:

Сообщение от WqR128
но гугла такие переменные

Вона кто воду мутит... :D


Часовой пояс GMT +3, время: 12:30.